Если нам нужно ответить на вопрос: String является ссылочным типом и ведет себя как ссылка. Мы передаем параметр, содержащий ссылку, а не фактическую строку. Проблема заключается в функции:
public static void TestI(string test)
{
test = "after passing";
}
Параметр test
содержит ссылку на строку, но это копия. У нас есть две переменные, указывающие на строку. И поскольку любые операции со строками фактически создают новый объект, мы делаем нашу локальную копию для указания на новую строку. Но исходная переменная test
не изменяется.
Предлагаемые решения по положению ref
в объявлении функции и в вызове работают, потому что мы не будем передавать значение переменной test
, но будем пропустите только ссылку на него. Таким образом, любые изменения внутри функции будут отражать исходную переменную.
Я хочу повторить в конце: String является ссылочным типом, но поскольку его неизменяемая строка test = "after passing";
фактически создает новый объект и выдает копию переменная test
изменена, чтобы указать на новую строку.
import time
time.time() * 1000
где 1000 - миллисекунды в секунду. Если все, что вы хотите, это сотые доли секунды с начала эпохи, умножьте на 100.
В Python datetime.now()
может производить значение с большей точностью, чем time.time()
:
from datetime import datetime, timezone, timedelta
now = datetime.now(timezone.utc)
epoch = datetime(1970, 1, 1, tzinfo=timezone.utc) # use POSIX epoch
posix_timestamp_micros = (now - epoch) // timedelta(microseconds=1)
posix_timestamp_millis = posix_timestamp_micros // 1000 # or `/ 1e3` for float
Теоретически, time.gmtime(0)
(эпоха, используемая time.time()
) может отличаться от 1970
.