小编Inc*_*ito的帖子

为什么C#中不允许使用const参数?

对于C++开发人员来说,它看起来很奇怪 在C++中,我们用来标记参数,const以确保它的状态不会在方法中改变.还有其他C++特定的原因,比如const ref为了传递ref而传递,并确保状态不会被更改.但是为什么我们不能在C#中标记为方法参数const?

为什么我不能像下面那样声明我的方法?

    ....
    static void TestMethod1(const MyClass val)
    {}
    ....
    static void TestMethod2(const int val)
    {}
    ....
Run Code Online (Sandbox Code Playgroud)

c# language-agnostic language-design

98
推荐指数
5
解决办法
3万
查看次数

显式地将泛型类型参数转换为任何接口

泛型FAQ中:最佳实践说:

编译器将允许您将泛型类型参数显式转换为任何接口,但不能转发给类:

interface ISomeInterface
{...}
class SomeClass
{...}
class MyClass<T> 
{
   void SomeMethod(T t)
   {
      ISomeInterface obj1 = (ISomeInterface)t;//Compiles
      SomeClass      obj2 = (SomeClass)t;     //Does not compile
   }
}
Run Code Online (Sandbox Code Playgroud)

除非未将类/接口指定为约束类型,否则我认为类和接口的限制都是合理的.

那么为什么这样的行为,为什么它被允许接口呢?

.net c# generics clr

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

为什么可选参数必须出现在声明的末尾

在我所看到的支持可选参数的所有编程语言中,模仿可选参数必须出现在声明的末尾.可选项目后可能不包含必需参数.这是什么原因?我想它可能是编译器/解释器的要求.

c# java language-agnostic language-design optional-parameters

18
推荐指数
2
解决办法
2万
查看次数

方法参数可以通过引用传递对象但是只读吗?

C#:你可以这样做,以便方法参数通过引用传递一个对象但是只读吗?

例如:

void MyMethod(int x, int y, read-only MyObject obj)
Run Code Online (Sandbox Code Playgroud)

where obj是对象引用,但在方法期间无法修改此对象.

这可以用C#实现吗?

c# readonly pass-by-reference

17
推荐指数
2
解决办法
8123
查看次数

哪一个更好用,为什么用c#

哪一个更好用?

int xyz = 0;
Run Code Online (Sandbox Code Playgroud)

要么

int xyz= default(int);

c#

11
推荐指数
4
解决办法
545
查看次数

为什么GetHashCode在Object类中?

为什么GetHashCode是Object类的一部分?只有一小部分对象用作哈希表中的键.当我们希望类的对象作为哈希表中的键时,必须实现一个单独的接口,这不是更好吗?

必须有一个原因,MS团队决定将此方法包含在Object类中,从而使其"无处不在".

.net c# language-agnostic clr

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

使用扩展方法从C#中的List <T>中删除某种类型的对象?

我想知道是否可以使用扩展方法从通用List中删除相同类型的所有对象.像这样的代码:

public static Remove<T>(this List<[any type]> list)
{
    // some code to remove the objects of type T from the list
}
Run Code Online (Sandbox Code Playgroud)

我可以使用以下代码执行此操作:

public static Remove<T, K>(this List<K> list)
{
    // some code to remove the objects of type T from the List<K>
}
Run Code Online (Sandbox Code Playgroud)

但我想只使用类型(T),而不需要指定任何类型K.通过这样做,用户可以使用此扩展方法,只需写下:

List<object> list = new List<object>();
list.Add(1);
list.Add("text");

// remove all int type objects from the list
list.Remove<int>();
Run Code Online (Sandbox Code Playgroud)

我可以使用一种扩展方法来完成与上面代码完全相同的操作.

最好的祝福

c# generics

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

检查NULL或0

SQL检查NULL或0的值的速度更快

我希望以最快的方式检查表中的值.

例如哪个更快:

IF ((SELECT ID FROM [SomeTable].[dbo].[BlockedSubscriberNumbers] 
     WHERE VALUE = @myVal) is null )
BEGIN
....
END
ELSE
BEGIN
....
END
Run Code Online (Sandbox Code Playgroud)

要么

IF ((SELECT COUNT(ID) FROM [SomeTable].[dbo].[BlockedSubscriberNumbers]
     WHERE VALUE = @myVal) > 0 )
BEGIN
....
END
ELSE
BEGIN
....
END
Run Code Online (Sandbox Code Playgroud)

在T-SQL中也扮演着频繁积累案例的角色.我的意思是它会更快,在大多数情况下它会失败到IF块,如果它将主要进入ELSE会更慢.

sql t-sql database sql-server

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

我可以在IIS之外托管ASP.NET网站吗?

我需要编写一个ASP.NET应用程序,它必须每秒处理大量的事务 - 多达5000个用户可以同时进行交易.我想我会在后面使用WCF与SQL服务器进行通信.但在前面,IIS能否有效地同时处理5000个用户,还是有任何简单的方法在IIS之外托管我的应用程序?

c# asp.net iis webserver web-services

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

.net的SASL库

我正在为.net 搜索sasl库.

到目前为止,我只能找到:Sasl.Net但它看起来已经死了,只能实现plain和digest-md5.

谁能建议一个好的图书馆?优选地是开源实现.

.net c# security authentication sasl

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