对于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) 在泛型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)
除非未将类/接口指定为约束类型,否则我认为类和接口的限制都是合理的.
那么为什么这样的行为,为什么它被允许接口呢?
在我所看到的支持可选参数的所有编程语言中,模仿可选参数必须出现在声明的末尾.可选项目后可能不包含必需参数.这是什么原因?我想它可能是编译器/解释器的要求.
c# java language-agnostic language-design optional-parameters
C#:你可以这样做,以便方法参数通过引用传递一个对象但是只读吗?
例如:
void MyMethod(int x, int y, read-only MyObject obj)
Run Code Online (Sandbox Code Playgroud)
where obj
是对象引用,但在方法期间无法修改此对象.
这可以用C#实现吗?
为什么GetHashCode是Object类的一部分?只有一小部分对象用作哈希表中的键.当我们希望类的对象作为哈希表中的键时,必须实现一个单独的接口,这不是更好吗?
必须有一个原因,MS团队决定将此方法包含在Object类中,从而使其"无处不在".
我想知道是否可以使用扩展方法从通用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)
我可以使用一种扩展方法来完成与上面代码完全相同的操作.
最好的祝福
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会更慢.
我需要编写一个ASP.NET应用程序,它必须每秒处理大量的事务 - 多达5000个用户可以同时进行交易.我想我会在后面使用WCF与SQL服务器进行通信.但在前面,IIS能否有效地同时处理5000个用户,还是有任何简单的方法在IIS之外托管我的应用程序?