小编Cai*_*ard的帖子

List<T>.Remove() 方法是否从删除对象中调用 Dispose() 方法?

我在集合列表中有几个对象。我需要知道从集合中删除对象时是否调用 Dispose() 方法?如果没有,当对象被删除时是否有某种方法可以调用它?

c#

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

javascript 是否有可选的索引运算符?

有时我有:

let a = { b: { c1: { z: false } } }
Run Code Online (Sandbox Code Playgroud)

其他时候我有:

let a = { b: { c2: { z: false } } }
Run Code Online (Sandbox Code Playgroud)

我有let n = 'c1'let n = 'c2'

我可以这样做来传播未定义的:

a?.b[n]?.z
Run Code Online (Sandbox Code Playgroud)

if(a.b) ...除此之外,如果b未定义,我可以做任何速记吗?

?[似乎没有,我认为我也做不到a['b'][n]?.z,因为如果没有 b 那么尝试对其进行索引n导致无法读取 undefined 的属性 VALUE_OF_N

javascript

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

.结果操作不会阻塞

我预计下面的代码会被阻塞近 5 秒,但事实并非如此。它立即打印出来。Result操作不是阻塞的吗?

class Program
{
    static void Main()
    {
        // Return a value type with a lambda expression
        Task<int> task1 = Task<int>.Factory.StartNew(() => Task.Delay(5000).Id + 100);
        int i = task1.Result;
        Console.WriteLine(i);
    }
}
Run Code Online (Sandbox Code Playgroud)

c# blocking task-parallel-library

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

有没有更简洁的方法来重用三元的 bool 测试中的结果作为三元的输出?

假设我有一个集合,其中一些形状可能是蓝色的。如果有蓝色形状,我想返回蓝色形状的数量。如果没有蓝色形状,我想返回所有形状的计数。这是在初始化程序中完成的,而且蓝色形状的计数又长又丑:

new SomeObject {
  CountOf = someCollection.Shapes.Count(s => s.Attributes.First(a => a.Name == "Color").Value == "Blue") > 0 ? 
    (someCollection.Shapes.Count(s => s.Attributes.First(a => a.Name == "Color").Value == "Blue") :
    someCollection.Shapes.Count()
}
Run Code Online (Sandbox Code Playgroud)

..这甚至更长,更丑陋,并且计数两次。可以通过将其设置为 Any 而不是 Count 来优化一些,但让我们假设我知道大部分时间接近末尾会有蓝色形状,因此循环 Any+Count 几乎与循环循环一样消耗资源算了,还是会丑

我可以像这样重复使用计数:

int c;
new SomeObject {
  CountOf = (c = someCollection.Shapes.Count(s => s.Attributes.First(a => a.Name == "Color").Value == "Blue")) > 0 ? 
    c :
    someCollection.Shapes.Count()
}
Run Code Online (Sandbox Code Playgroud)

..this 依靠赋值c返回赋值的值,并对其进行 bool 测试,然后我们可以c在输出中使用。我不知道有一种方法可以声明c内联到三元。(它仍然可能计数两次)

不可能使用正在初始化的属性作为三元中的临时存储,也不可能将其初始化两次(尽管它可以初始化为蓝色的计数,然后在创建后进行测试并更改为 0)并且 C# 没有任何真实性行为像JavaScript可能会被利用来挑选ba||b …

c#

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

C# 类中构造函数中的泛型?

我有一个带有构造函数的 C# 类。构造函数当前需要一个logger<myObject>. 代码如下所示:

public class MyClass
{
   private ILogger<MyObject> _logger;

   public MyClass(ILogger<MyOjbect> logger)
   {
     _logger = logger; 
   }
}
Run Code Online (Sandbox Code Playgroud)

我希望 ILogger 采用泛型,这样我就可以在任何我想要的地方实例化 MyClass 的实例,并传入ILogger<T>我想要的任何类型,但是,当我更改<MyObject>为时,<T>我得到:

找不到类型或命名空间“T”。您是否缺少指令或程序集引用?

意思是,我希望代码如下所示:

public class MyClass
    {
       private ILogger<T> _logger;
    
       public MyClass(ILogger<T> logger)
       {
         _logger = logger; 
       }
    }
Run Code Online (Sandbox Code Playgroud)

并创建它:

var myClass = new MyClass(ILogger<Something> logger);
Run Code Online (Sandbox Code Playgroud)

.net c#

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

if 语句不能在“bool”和“float”类型的运算符上应用运算符“&lt;=”

bool isMouseClicked;
bool Test;
float Number1;
float Number2;
float Number3;

isMouseClicked = true;
Number1 = -1;
Number2 = 0;
Number3 = 1; 

void Update()
{
   if (isMouseClicked && Number1 <= Number2 <= Number3)
   {
      Test = true;
   }
}
Run Code Online (Sandbox Code Playgroud)

当我运行这个程序时,它告诉我Operator '<=' cannot be applied to operands of type 'bool' and 'float'

c#

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

标签 统计

c# ×5

.net ×1

blocking ×1

javascript ×1

task-parallel-library ×1