您如何看待以下断言?
Assert.IsTrue(condition1 && condition2);
Run Code Online (Sandbox Code Playgroud)
我在审查会议期间想出了这种类型的断言.据我所知,在断言中使用&&运算符不是一个好习惯.我想知道其他人的想法?值得一提的是,这是下一次审查会议期间的问题吗?或者这仅仅是个人偏好?
我有以下代码.这不是我使用的确切代码,因为它是我工作地点的内部,但它是我遇到的场景的代表.
public class Service : ServiceBase
{
private static readonly Service _instance = new Service();
private static readonly string a = @"D:\test.txt";
private Service () : base()
{
// the value stored in "a" is always blank.
Console.Writeline(a);
}
static void Main(string[] args)
{
Run(_instance);
}
}
Run Code Online (Sandbox Code Playgroud)
此代码是一个Windows服务(基类中有特定于服务的代码).由于某种原因,存储在"a"中的值在构造函数中始终为空.有没有明显的东西在做这个,或者它是.NET平台中的怪癖?
我有这样的枚举
[Flags]
public enum Key
{
None = 0,
A = 1,
B = 2,
C = 4
}
Run Code Online (Sandbox Code Playgroud)
我有以下内容
Key k1 = Key.A | Key.B | Key.C;
Run Code Online (Sandbox Code Playgroud)
我想得到k1中具有最低值的键.我怎样才能做到这一点?
例:
Key k1 = Key.A | Key.B | Key.C; // I want a
Key k2 = Key.B | Key.C; // I want b
Key k3 = Key.A | Key.C; // I want a
Run Code Online (Sandbox Code Playgroud) public class Outer
{
public class Inner
{
public static string OtherValue { get { return SomeValue; } }
}
public static string SomeValue { get { return "Outer"; } }
}
Run Code Online (Sandbox Code Playgroud)
为什么以上编译?SomeValue是否超出内部范围且需要符合资格Outer.SomeValue
?上面的内容与下面的内容基本相同(不会编译)?
public class Outer
{
public class Inner
{
public static string OtherValue { get { return Outer.SomeValue; } }
}
public static string SomeValue { get { return "Outer"; } }
}
Run Code Online (Sandbox Code Playgroud)
static
这里有什么魔力?
我想定义一些lambda表达式来表示类实例属性的更新。
我试着写如下:
Expression<Action<User>> update = user => user.Name = "Joe Foo";
Run Code Online (Sandbox Code Playgroud)
但是我有一个编译错误:
错误CS0832表达式树可能不包含赋值运算符。
如何用lambda表示此更新。
编辑
我的目标是使业务服务将更新发送到通用存储库。该存储库可以分析lambda的表达式以构建查询以发送到数据库引擎。
商业服务的示例可以是:
Expression<Action<User>> update = user => user.Name = "Joe Foo";
Run Code Online (Sandbox Code Playgroud) 假设我有两个包含静态变量XmlTag的类.第二个类继承自第一个类.我有一个模板方法,需要根据它使用的类型获取XmlTag.无需创建该类型的实例,最好的方法是什么?这是一个例子(不会编译),应该有希望说明我在说什么.
class A{
public static readonly string XmlTag = "AClass";
}
class B : A {
public static readonly string XmlTag = "BClass";
}
Run Code Online (Sandbox Code Playgroud)
此方法当前无效.显然无法从类型参数访问静态变量.
string GetName<T>(T AClass) where T : A
{
return T.XmlTag;
}
Run Code Online (Sandbox Code Playgroud) 我有一个在客户端运行的应用程序,此应用程序向/从远程服务器发送和接收数据.
有什么方法可以保证发送到服务器的数据真的来自允许的应用程序?
当然我可以加密数据,但由于它可以被反编译,它不会使它100%安全.
我们正在使用.net/c#.
谢谢!
我使用C#HastSet和LINQ的Join方法遇到了一些奇怪的行为,我不明白.我已经简化了我正在做的事情,以帮助专注于我所看到的行为.
我有以下内容:
private HashSet<MyClass> _mySet; // module level
IEnumerable<ISearchKey> searchKeys; // parameter.
// Partial key searches are allowed.
private IEqualityComparer<ICoreKey> _coreKeyComparer; // Module level.
// Compares instances of MyClass and ISearchKey to determine
// if they match.
Run Code Online (Sandbox Code Playgroud)
{searchKey_a, myClass_a1},
{searchKey_a, myClass_a2},
{searchKey_a, myClass_a3},
{searchKey_b, myClass_b1},
{searchKey_b, myClass_b2},
{searchKey_c, myClass_c1},
{searchKey_c, myClass_c2},
{searchKey_c, myClass_c3},
{searchKey_c, myClass_c4},
etc....
Run Code Online (Sandbox Code Playgroud)
ie同一个ISearchKey实例会多次出现,一次为它所连接的每个匹配的MyClass实例.
var matchedPairs = searchKeys
.Join(
_mySet,
searchKey => searchKey,
myClass => …
Run Code Online (Sandbox Code Playgroud) 我正在尝试创建和使用只有不可变类,其中所有字段都是只读不可变类型,尽管可能有其他字段是可变的并且不被认为是对象状态的一部分(主要是缓存的哈希码).
在实现IEquatable时,我会像对非不可变对象一样
也就是说,
public bool Equals(MyImmutableType o) =>
object.Equals(this.x, o.x) && object.Equals(this.y, o.y);
Run Code Online (Sandbox Code Playgroud)
现在这是不可变的,这似乎是低效的,对象永远不会改变,如果我可以计算并存储一些独特的指纹,我可以简单地比较指纹而不是整个字段(可以称之为自己的Equals
等).
我想知道什么是一个很好的解决方案呢?将BinaryFormatter
+ MD5值得探索?
我知道Eric Lippert关于情况的博客文章, 但我认为这是一个不同的情况,因为该领域自我而不是其领域.如果Enumerator只是readonly没有显示任何效果并且输出始终为0,你怎么解释调用MoveNext()?
class SomeClass
{
private List<int> list;
private [readonly] List<int>.Enumerator enumerator;
public SomeClass()
{
list = new List<int>() { 1, 2, 3 };
enumerator = list.GetEnumerator();
}
public int ReadValue()
{
if (enumerator.MoveNext())
return enumerator.Current;
return -1;
}
}
static void Main()
{
SomeClass c = new SomeClass();
int value;
while ((value = c.ReadValue()) > -1)
MessageBox.Show(value.ToString());
}
Run Code Online (Sandbox Code Playgroud) 之间是什么不同int **p
和int *p2[5]
在第一种情况下p是一个指针,指向指针的数组,我将在以后定义!但也P2指向指针的数组!!!!.
int *p2[5]
是一样的int p2[5];
.因为在这两种情况下p2都是指针!有什么不同?
下面给出的是英语词典中排列为矩阵的单词
MATHE
ATHEM
THEMA
HEMAT
EMATI
MATIC
ATICS
Run Code Online (Sandbox Code Playgroud)
跟踪矩阵从左上角开始,每步向右或向下移动,到达矩阵的右下角.确保任何此类跟踪都生成相同的单词.对于长度为m + n-1的给定单词写成大小为m*n的矩阵,可以有多少这样的跟踪?
输入格式第一行输入包含一个整数T.每行都有T个测试用例.每行包含2个空格分隔的整数m和n,表示写入的矩阵有m行,每行有n个字符.
约束:
1 <= T <= 103
1 ? m,n ? 106
Run Code Online (Sandbox Code Playgroud)
输出格式打印可以跟踪单词的方式(S)的数量,如问题陈述中所述.如果数字大于10,则为9 +7,请打印S mod(10 rest to power 9 +7)
样本输入
1
2 3
Run Code Online (Sandbox Code Playgroud)
样本输出
3
Run Code Online (Sandbox Code Playgroud)
解释让我们考虑写为矩阵的单词AWAY
AWA
WAY
Run Code Online (Sandbox Code Playgroud)
在这里,矩阵中的单词AWAY可以用3种不同的方式跟踪,遍历RIGHT或DOWN.
AWA
Y
AW
AY
A
WAY
Run Code Online (Sandbox Code Playgroud)