小编use*_*051的帖子

使用反射获取属性引用

var a = new obj();
var property = a.GetType().GetProperty("DB").GetValue(a,null) as testObject;
Run Code Online (Sandbox Code Playgroud)

这是否意味着该变量property持有对我在对象a中获得的同一对象的引用,或者制作了一个持有相同值的新testObject?

如果这意味着创建一个新对象,那么如何使用反射获取对该属性/支持字段的引用?

c# reflection

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

c#中的等于按引用或值进行比较吗?

var A = new obj(1,2,3); //parameters are just used to set some fields no randomness is involved
var B = A;
var C = new obj(1,2,3); 
Run Code Online (Sandbox Code Playgroud)

我想确定我的理解是否正确

  • A.Equals(B).Equals(C)(true)
  • A == C(假)
  • A == B(真)

Equals()比较两个对象之间所有字段和属性的值,是否可以肯定地信任它?

也确实Equals()用反射?

.net c#

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

得到一个随机数,只要它不在列表中

 var list = new List<int>(){1,17,18,21,30};
 Random rnd = new Random(DateTime.Now.Second);
 int r;
 do
 {
     r = rnd.Next(1, 30);
 }
 while (list.Contains(r));
Run Code Online (Sandbox Code Playgroud)

但我认为这是一个愚蠢的解决方案,任何人都可以给我一个更优化的方法吗?

如果有一种方法可以阻止Random实例返回已经返回的数字,那就更好了.

如果有人想知道我为什么需要这个,它是改组3字节数组并将它们组合成一个字节数组并生成3字节数组的第一步,它保存索引原始顺序,就像它在原始数组中一样.

c# random

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

使用Web技术进行UI

令我着迷的是Web应用程序的UI变得多么丰富.使用HTML,CSS和JavaScript构建优秀的UI非常容易,但我只想使用C++作为我的逻辑.有没有办法用C++或Java构建应用程序并使用Web技术进行UI?

我不是在谈论Web应用程序,而是没有Web浏览器的独立应用程序.

c++ java user-interface html5

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

CLR如何解释以下LINQ查询

我有2个obj1和的列表obj2

var list1 = new List<obj1>();
var list2 = new List<obj2>();
Run Code Online (Sandbox Code Playgroud)

obj1和obj2共享一个名为name的字符串属性,我需要通过list2中可用的name属性值过滤list1,所以我做了以下操作

var filteredlist = list1.Where(o => list2.Select(o2 => o2.name)
                                         .Distinct()
                                         .Contains(o.name));
Run Code Online (Sandbox Code Playgroud)

以上Linq查询等于以下?

 var distinctNames = list2.Select(o2 => o2.name).Distinct();
 var filteredlist = list1.Where(o => distinctNames.Contains(o.name));
Run Code Online (Sandbox Code Playgroud)

我的问题是在第一个查询中clr制作一个临时变量来保存distinctNames,即使我没有像第二个查询那样自己创建它吗?或者它会在每次迭代时从list2重做Select Distinct吗?

如果它不创建临时变量,你会如何在一行中编写此查询?

c# linq

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

ObservableCollection(T).CollectionChanged事件

SelectedObjects.CollectionChanged += (s, e) =>
{
    Console.WriteLine(e.NewItems.Count);//prints out 1 if a new item is added
};
Run Code Online (Sandbox Code Playgroud)

有一件事我不确定是为什么e.OldItems和e.NewItems是收藏品?

如果我每秒添加多个项目,事件会被触发foreach项目,输出总是1,这意味着它被多次触发,但有没有办法延迟事件触发,例如在更改5秒后我可以在e.OldItems或e.NewItems中获得5秒内的每一个变化?

c#

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

空结合运算符覆盖

我知道做以下事情是没有意义的:

xstring.ToLower()??"xx"
Run Code Online (Sandbox Code Playgroud)

因为我ToLower()在调用null之前调用了.有没有办法解决这个问题,保持语法清晰干净?

我可以覆盖??字符串的运算符,以便它只调用ToLower()xstring不是null吗?

c#

3
推荐指数
2
解决办法
543
查看次数

使用 LINQ 按索引连接

我有 2 个字节数组

var Bytes =new byte[20];
var Indecies =new byte[20];
Run Code Online (Sandbox Code Playgroud)

我刚刚开始使用 LINQ,我需要将它们连接到数组中以创建一个对象。

public ArrayObject
{
   public byte index{get;set;}
   public byte value{get;set;}
}
Run Code Online (Sandbox Code Playgroud)

这就是我的开始方式

var list = from b in Bytes 
           join i in Indecies 
           select new ArrayObject()
               { index=i, value=b }
Run Code Online (Sandbox Code Playgroud)

但我似乎无法弄清楚该ON零件要放什么,在一个循环中它会是

for (int i = 0; i < 20; i++)
{
    list.Add(new ArrayObject() { value = Bytes[i], index = indecies[i] });
}
Run Code Online (Sandbox Code Playgroud)

如何在 Linq 中通过数组索引连接?

c# linq

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

避免使用linq创建新对象

我对linq语法不是很熟悉,我不确定这个查询是否与我想要实现的完美契合,但它的工作完美.我怎样才能让它更好,是否可以避免使用新的元组或新对象?

byte[] ShuffledBytes= new byte[20];
byte[] Indecies = new byte[20]; //holds the right index for each byte in Bytes

    var orderdBytes = 
                    Indecies.
                    Zip(ShuffledBytes, (i, b) => new Tuple<byte,byte>(b,i)).
                    OrderBy(o => o.Item2).
                    Select(o => o.Item1).
                    ToArray();
Run Code Online (Sandbox Code Playgroud)

c# linq

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

标签 统计

c# ×8

linq ×3

.net ×1

c++ ×1

html5 ×1

java ×1

random ×1

reflection ×1

user-interface ×1