public class TestClass
{
public byte[] Bytes;
public TestClass(byte[] bytes)
{
Bytes = bytes;
}
public void Upd()
{
Bytes = new byte[101 * 1024 * 1024];
}
}
...
static void Main(string[] args)
{
var data = new TestClass[3];
for (int i = 0; i < 3; i++)
{
data[i] = new TestClass(new byte[1]);
}
data[1].Upd();
}
float result;
string value = $"Результат: {result}";
float result = 0f;
if (o == "+")
{
result = add(f, s);
}
else if(o == "-")
{
result = subtraction(f, s);
}
else if(o == "*")
{
result = multiplication(f, s);
}
else if(o == "/")
{
result = division(f, s);
}
else
throw new Exception($"Unexpected operation '{o}'");
, но таблицы методов создаются под каждый объект класса индивидуально.
В какой памяти находится статический класс, в куче, по идее?конечно, только не в той которая SOH/LOH, а в той что упоминается у рихтера как "на самом деле куч больше чем 2, но остальное вам не нужно". А если еще точнее - в high frequency heap. Не знаю зачем это знание вам надо, но живите теперь с этим.
Статический класс - это объект-тип, который содержит таблицу методов, но только статических и статического конструктора?
class Program
{
static void Main(string[] args)
{
const int i1 = 10;
var k1 = i1 + Func(i1);
Console.WriteLine(k1);
var i2 = 10;
var k2 = i2 + Func(i2);
Console.WriteLine(k2);
}
private static int Func(int i)
{
return i * 2;
}
}
internal class Program
{
private static void Main(string[] args)
{
Console.WriteLine(10 + Program.Func(10));
int i = 10;
Console.WriteLine(i + Program.Func(i));
}
private static int Func(int i)
{
return i * 2;
}
}
So, как в куче помечено, что класс B унаследован от класса А?
Почему это происходит?
public class Class1
{
private readonly Action _action;
public Class1(string actionName)
{
switch (actionName)
{
case "1":
_action = Action1;
break;
case "2":
_action = Action2;
break;
default:
throw new Exception($"Unexpected action name {actionName}");
}
}
public void Act()
{
_action.Invoke();
}
private void Action1()
{
// ...
}
private void Action2()
{
// ...
}
}
private static string[] _elementNames = new[] { "SiO2 (β-кварц)", "and", "more"};
....
if (_elementNames.Contains(name))
{
if (curTemp <= 846.15)
{
h = -217.75F;
s = 10F;
a = 11.22F;
b = 8.2F;
c = -2.7F;
}
else if (....) { ....}
....
}
async voidвернет управление обратно, не дожидаясь выполнения асинхронного кода внутри. вам же нужно возвращать таску
public async Task DownloadVideo1080PAsync(string path, ProgressBar progressBar, string link)
{
await ytClient.Videos.Streams.DownloadAsync(audioInfo, Path.Combine(newLink, $"audio.wav"));
await ytClient.Videos.Streams.DownloadAsync(videoInfo, Path.Combine(newLink, $"video.mp4"), progressHandler);
}
public Task MergeAudioVideoAsync(string link)
{
return ffmpeg.ExecuteAsync($@"-i video.mp4 -i audio.wav -c:v copy -c:a aac newVideo.mp4");
}
....
await DownloadVideo1080PAsync(....);
await MergeAudioVideoAsync(...);
....
array[i,j] < 0 && array[i++,j++] >= 0 || array[i,j] >= 0 && array[i++,j++] < 0запустите в дебаггере/интерактивной консоли и проверьте действительно ли это будет работать как вы думали. подозреваю что вы хотели получить все-же другой результат
В CLR не входит CIL?
JIT запускается каждый раз при сборке проекта или только один раз чтобы запомнить архитектуру платформы?