如何更改此窗口中的语言?我的 Vizhla 是英文的,但由于某种原因,此窗口以俄语本地化打开。我尝试完全删除俄语,只保留语言包中的英语,但没有帮助
Kalmankantaja's questions
有一类:
public class Test
{
private string[] _array;
public Test(int n)
{
_array = new string[n];
}
//return _array[i];
public string Method(int i)
{
var ownerType = this.GetType();
DynamicMethod method = new DynamicMethod("test_method",
typeof(string),
new Type[] { typeof(int) },
ownerType );
var generator = method.GetILGenerator();
var arrayField = ownerType.GetField("_array", BindingFlags.NonPublic | BindingFlags.Instance);
generator.Emit(OpCodes.Ldarg_0);
generator.Emit(OpCodes.Ldfld, arrayField);
generator.Emit(OpCodes.Ldarg_1);
generator.Emit(OpCodes.Ldelem_Ref);
generator.Emit(OpCodes.Ret);
return (string)method.Invoke(null, new object[] { i });
}
}
调用时Method
会抛出异常
System.Reflection.TargetInvocationException: 'Exception has been thrown by the target of an invocation. Inner Exception: NullReferenceException: Object reference not set to an instance of an object.'
。如何加载当前类实例以便其成员在 DynamicMethod 中可用?
创建对象后如何调用方法?现在我这样做:
DynamicMethod method = new DynamicMethod("test_method", typeof(List<string>), new Type[0]);
var generator = method.GetILGenerator();
var type = typeof(List<string>);
generator.Emit(OpCodes.Newobj, type);
generator.Emit(OpCodes.Stloc_0);
generator.Emit(OpCodes.Ldloc_0);
generator.Emit(OpCodes.Ldstr, "test");
generator.Emit(OpCodes.Callvirt, type.GetMethod("Add"));
generator.Emit(OpCodes.Ldloc_0);
generator.Emit(OpCodes.Ret);
var result = (List<string>)method.Invoke(null, null);
但我得到一个例外
System.Reflection.TargetInvocationException: Exception has been thrown by the target of an invocation.
---> System.BadImageFormatException: Bad method token.
可能是什么问题呢?
微软为什么不去掉Task和Task的继承能力?如果不是密封的,那么在某些情况下可以/正确地从此类继承。它在理论上可以是什么情况?
如何更改此代码以摆脱递归?这个问题是这个问题的延续
public static IEnumerable<VisualElement> GetChildren(VisualElement root)
{
yield return root;
if (root?.Children != null)
foreach (var child in root.Children)
{
foreach (var node in GetChildren(child))
yield return node;
}
}
VisualElement
:
class VisualElement
{
public string Name { get; set; }
public IEnumerable<VisualElement> Children { get; set; }
}
任务本质:绕过树(preorder),但是不能返回正常的IEnumerable<VisualElement>
,只返回第一个元素,循环到此结束。该算法是正确的,因为如果将方法设为 void 而不是yield return root
done Console.WriteLine(root)
,那么所有内容都会以正确的顺序显示。
public static IEnumerable<VisualElement> GetChildren(VisualElement root)
{
yield return root;
if (root?.Children != null)
foreach (var child in root.Children)
{
GetChildren(child);
}
}
当然,您可以添加一个字段List<VisualElement>
,然后yield return
将其添加到集合中,但是这种方法对我来说似乎很糟糕,因为当您再次运行该方法时,它将List
是非空的。
如何验证 IP 地址以进行合法访问?我有以下列表:
185.71.76.0/27
185.71.77.0/27
77.75.153.0/25
77.75.156.11
77.75.156.35
77.75.154.128/25
2a02:5180::/32
如您所见,有不同的掩码和协议版本。有些API方法只能从这些地址访问,但不知道如何判断当前IP地址是否合法。
我知道有一个类IPNetwork
,Microsoft.AspNetCore.HttpOverrides
但我不知道如何存储上面的列表以进行验证。
如何在字段中引用堆栈并将其存储在堆中?
System.String
==
重载and运算符!=
,但它们都调用Equals
. 该方法的第一部分是不言自明的,它将引用/长度/与 null 进行比较。但我不清楚第二部分。该方法称为SpanHelper.SequenceEquals
. 他在做什么?只有第一个char
比较的字符串被传递到那里,转换为byte
,然后什么都不清楚。
使用 leetcode 完成任务。任务文本:
给定两个大小分别为 m 和 n 的排序数组 nums1 和 nums2,返回两个排序数组的中位数。总体运行时复杂度应为 O(log (m+n))。
我已经解决了这个问题,但我想实现最快的解决方案。目前,我已经为自己160 ms
和39.2 MB
. 如何使代码在速度和内存消耗方面更加优化?
public class Solution
{
public double FindMedianSortedArrays(int[] nums1, int[] nums2)
{
nums1 = Concat(nums1, nums2);
SortArray(nums1, 0, nums1.Length - 1);
if (nums1.Length % 2 == 0)
{
double a = nums1[nums1.Length / 2 - 1];
double b = nums1[nums1.Length / 2];
double result = (a + b) / 2;
return result;
}
return Convert.ToDouble(nums1[nums1.Length / 2]);
}
private int[] Concat(int[] x, int[] y)
{
int oldLen = x.Length;
Array.Resize(ref x, x.Length + y.Length);
Array.Copy(y, 0, x, oldLen, y.Length);
return x;
}
private void SortArray(int[] array, int leftIndex, int rightIndex)
{
var i = leftIndex;
var j = rightIndex;
var pivot = array[leftIndex];
while (i <= j)
{
while (array[i] < pivot)
{
i++;
}
while (array[j] > pivot)
{
j--;
}
if (i <= j)
{
int temp = array[i];
array[i] = array[j];
array[j] = temp;
i++;
j--;
}
}
if (leftIndex < j)
SortArray(array, leftIndex, j);
if (i < rightIndex)
SortArray(array, i, rightIndex);
}
}
有一些数字数组:
int[] arr = new int[] { 2, 3, 3, 3, 5, 4, 7};
所以想要的数字是:9
如何从数组中的数字中找到数字的总和?下面是一个结果示例:2, 7
, 3, 3, 3
, 5, 4
, 2, 4, 3
. 在算法中,一切对我来说都非常糟糕,因此我什至不知道该谷歌搜索什么,往哪个方向看?
有条件MyLib1.dll
的其中有以下方法:
public static int Sum(int a, int b)
{
return a + b;
}
我的图书馆也有一些用户调用此方法。我可以跟踪我的方法将返回的值的分配吗?
也就是说,有条件地它看起来像这样(在用户代码中):
int result = MyLib.LibClass.Sum(5, 5);
执行此方法后,内存分配(可能不是,但不是本质)下result
,MyLib1.dll
我想知道是否有值分配。如何做到这一点,有可能吗?
我使用的是 tinymce 6.1.0,添加了添加图像的功能,但resolve
切断了部分https://localhost:5001
并仅返回文件的相对路径,但我需要一个绝对路径。如何解决这个问题?
var editor = tinymce.init(
{
selector: '#UpdateViewModel_HtmlContent',
setup: function (editor)
{
editor.on('change', function ()
{
editor.save();
});
},
images_upload_handler: function (blobInfo, progress)
{
return new Promise((resolve, reject) =>
{
formData = new FormData();
formData.append(blobInfo.filename(), blobInfo.blob());
abp.ajax({
type: "POST",
url: abp.appPath + 'api/static/editing/content/image',
data: formData,
processData: false,
contentType: false,
success: function (res)
{
progress && progress(100);
resolve('https://localhost:5001/' + res.url);
},
error: function (err)
{
reject('Failed to upload image to server');
},
formData: "multipart/form-data"
});
});
},
plugins: 'image code',
toolbar: 'undo redo | link image | code',
file_picker_types: 'image'
});
有一个文件内容如下(他只给出了前两行,有些行的值是1500左右):
Id_1C;Id;Group_id;Producer;Partnumber;Prefix;Name;Addon;Selling;Status;Тип;механизма;Материал;корпуса;Циферблат;Цифры;Бой;Маятник;Ночной;режим;Ширина;Высота;Глубина
CB002590925;1706267;0;TFA;TFA;60.3062.51;Настеные;часы;60.3062;PICUS;(Зеленый;дятел),;розовое;золото;;0;0;*кварцевые;*алюминий;*золотистый;*отсутствуют;*нет;*да;*нет;
如何将其转换为 C# 对象?除了使用 Visual Basic,我没有发现任何正常的东西,但我真的不想这样做。当然,你可以手动完成,但我也不想手动解析 20 个属性
我有一个包含很多相同代码的 CRUD 服务。它继承自抽象类(crud 所需的一切都已在其中实现)。几乎所有方法(此处仅通过示例显示Update
)具有相同的结构。如何为管理员创建一个自动启用/禁用多租户的属性(即 with Id = null
)?
class ContractCrudService : CrudAppService<ContractStatus, ContractStatusDto, Guid, PagedAndSortedResultRequestDto, CreateUpdateContractStatusDto>
{
public override async Task<ContractDto> UpdateAsync(Guid id, CreateUpdateContractDto dto)
{
if(CurrentTenant.Id == null)
{
using (DataFilter.Disable<IMultiTenant>())
{
return await base.UpdateAsync(id, dto);
}
}
return await base.UpdateAsync(id, dto);
}
}
我自己尝试写一个类似的属性,但是在重新定义之后尝试结束了,Match
因为我什至没有想法如何做到这一点
Quick actions and refactoring
我在编写代码时使用它。直接自动生成领域兴趣的时刻。例如:
public MyClass(string value)
{
}
Studio 在快速操作后创建以下结构:
private readonly string value;
public MyClass(string value)
{
this.value = value;
}
但!Microsoft建议使用前缀 命名字段,_
工作室自己不会这样做。如何设置工作室以便使用前缀生成字段_
,但不更改构造函数中的参数名称?我想得到以下结果Quick actions and refactoring
:
private readonly string _value;
public MyClass(string value)
{
_value = value;
}
我使用库Microsoft.Toolkit.Mvvm
,我ViewModel
继承自ObservableObject
(它有一个方法SetProperty
。出于某种我不明白的原因,文档中的方法重载和现实有些不同,但即使是那些,也不可能重载。方法签名如下:
protected bool SetProperty<T> (T oldValue, T newValue, Action<T> callback, string? propertyName = default);
在视图模型中:
private bool _enableInbound;
public bool EnableInbound
{
get { return _enableInbound; }
set
{
SetProperty(ref _enableInbound, value, callback: new System.Action<bool>((target) =>
{
}));
}
}
但是,当您尝试使用它时,它会像这样出现在屏幕上。我尝试Action
通过该方法,我也尝试只使用没有 的 lambda new Action
,结果是一样的。可能是什么问题呢?
错误文字:Error CS1615 Argument 1 may not be passed with the 'ref' keyword
假设有一种方法。在这个例子中,内存将被分配到什么地方?
class C
{
public void Method()
{
Task.Run(() => { });
}
}
在 Release 中,编译器将制作以下结构:
public class C
{
[Serializable]
[CompilerGenerated]
private sealed class <>c
{
public static readonly <>c <>9 = new <>c();
public static Action <>9__0_0;
internal void <M>b__0_0()
{
}
}
public void M()
{
Task.Run(<>c.<>9__0_0 ?? (<>c.<>9__0_0 = new Action(<>c.<>9.<M>b__0_0)));
}
}
事实证明,在类中<>c
创建了一个字段<>c <>9 = new <>c()
以引用<M>b__0_0
. 我想是的。内存只分配<>9
。
毕竟,如果你不使用羊肉:
public class C
{
public void M()
{
Task.Run(new Action(A));
}
void A() {}
}
这被编译成相同的东西,并且仅在以下情况下相应地分配内存new Action()
(在第一种情况下,我们还有 field 的初始化<>9
)。