小编Mat*_*ira的帖子

结构的默认参数

我有一个像这样定义的函数:

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.

c# c#-4.0

13
推荐指数
1
解决办法
7202
查看次数

使用System.Reflection打印所有System.Environment信息

我们有一个小任务在控制台窗口中打印所有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

5
推荐指数
1
解决办法
3769
查看次数

我需要带ReaderWriterLockSlim的MemoryBarrier吗?

看起来单声道实现MemoryBarrierReaderWriterLockSlim方法内没有调用.因此,当我在a中进行任何更改时write lock,我可以在另一个使用a的线程中接收旧的缓存值read lock.

真的有可能吗?我应该MemoryBarrier在代码内部读取和写入锁定之前和之后插入?

c# multithreading asynchronous thread-safety

4
推荐指数
1
解决办法
327
查看次数

当没有这样的运算符时显式转换为uint

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#

3
推荐指数
1
解决办法
1180
查看次数

在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)

c# sorting list

1
推荐指数
1
解决办法
290
查看次数

太多了)匹配的时候

我编写了以下简单的正则表达式来匹配模式.

它具有以下条件:

  1. 它必须在句子开头包含"供应商"一词
  2. "供应商"一词后面必须有空格
  3. 该空格必须后跟3位或4位数字

我的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)

是否有人能够验证我的语法,提供任何建议或提供替代表达式以便在我的情况下使用?

c# regex

0
推荐指数
1
解决办法
895
查看次数