我有一个像这样定义的函数:
public static void ShowAbout(Point location, bool stripSystemAssemblies = false, bool reflectionOnly = false)
这标志CA1026"替换方法'ShowAbout'与提供所有默认参数的重载".我不能这样做,Point location = new Point(0, 0)
或者Point location = Point.Empty
因为它们都不是编译时常量,因此不能是该函数参数的默认值.所以问题是,如何为结构指定默认参数值?如果不能这样做,我可能会用这里的任何理由来压制CA1026.
我们有一个小任务在控制台窗口中打印所有Environment
类的变量使用reflection
,但是怎么做我甚至都没有线索.如果我在这里写错了,我很抱歉,我是新来的C#
.
当然我可以使用这种代码,但这不是我所要求的.
string machineName = System.Environment.MachineName;
Console.WriteLine(machineName);
Run Code Online (Sandbox Code Playgroud)
我搜索了Google这么多,这就是我找到的,但我认为这不是我需要的.我甚至不知道我需要什么.
System.Reflection.Assembly info = typeof(System.Int32).Assembly;
System.Console.WriteLine(info);
Run Code Online (Sandbox Code Playgroud)
有什么建议,线索?
c# environment-variables console-application system.reflection
看起来单声道实现MemoryBarrier
在ReaderWriterLockSlim
方法内没有调用.因此,当我在a中进行任何更改时write lock
,我可以在另一个使用a的线程中接收旧的缓存值read lock
.
真的有可能吗?我应该MemoryBarrier
在代码内部读取和写入锁定之前和之后插入?
我ulong
用一个私有数据成员编写了一个简单的包装器.我希望能够将包装器转换ulong
为检索数据.我希望强制转换uint
和丢失数据是非法的,所以我没有写一个显式的强制转换uint
.当C#允许我uint
毫无怨言地投射并且即使高位丢失也没有抛出异常时,你可以想象我的惊喜.
这是我的测试代码:
class Program {
static void Main(string[] args) {
ULongWrapper a = new ULongWrapper(0xfffffffffUL);
ulong b = (ulong)a;
uint c = (uint)a;
Console.WriteLine("{0:x}", b);
Console.WriteLine("{0:x}", c);
}
}
class ULongWrapper {
private ulong data;
public ULongWrapper(ulong data) {
this.data = data;
}
public static explicit operator ulong(ULongWrapper x) {
return x.data;
}
}
Run Code Online (Sandbox Code Playgroud)
哪个印刷品:
fffffffff
ffffffff
Run Code Online (Sandbox Code Playgroud)
这似乎是不需要的行为,因为我希望强制转换uint
在编译时失败!编译器使用ulong
显式转换运算符,然后以某种方式隐式地将该结果转换为uint
无边界检查.这是C#中的错误,如果没有,为什么?
我在C#中有两个列表.
public List<MyClass> objectList = new List<MyClass>(); // it is filled with MyClass objects
public List<int> numberList = new List<int>(); // it is filled with numbers
Run Code Online (Sandbox Code Playgroud)
numberList中的数字索引对应于objectList中的对象索引:例如:objectList [0] = o1和numberList [0] = 3; objectList [1] = o2和numberList [1] = 5 ...
objectList: |o1 | o2 | o3 | o4 | o5 | ...
numberList: 3 5 6 1 4 ...
Run Code Online (Sandbox Code Playgroud)
我想按照升序对numberList中的数字进行排序,我希望objectList中的objetcs随之移动:排序后:
objectList: |o4 | o1 | o5 | o2 | o3 | ...
numberList: 1 3 4 5 6 ... …
Run Code Online (Sandbox Code Playgroud) 我编写了以下简单的正则表达式来匹配模式.
它具有以下条件:
我的RegEx看起来像这样:
(Supplier )([0-9]{3,4})
Run Code Online (Sandbox Code Playgroud)
当我对它运行以下命令并且输入中包含'('或')'时,我收到错误Too Many )'s
.
Regex.IsMatch("(Supplier )([0-9]{3,4})", "Supplier 2000 (detail)", RegexOptions.IgnoreCase)
Run Code Online (Sandbox Code Playgroud)
是否有人能够验证我的语法,提供任何建议或提供替代表达式以便在我的情况下使用?