约瑟夫·阿尔巴哈里和本·阿尔巴哈里(奥莱利)在果壳中的C#6.0.
版权所有2016 Joseph Albahari和Ben Albahari,978-1-491-92706-9.
在引入Implicit Calling of Parameterless Base-Class Constructor之后,在第96页说明以下内容:
如果基类没有可访问的无参数构造函数,则子类被强制
base在其构造函数中使用关键字.
我正在尝试创建一个代码片段来证实这一点,但还没有成功.
我的片段:
public class X
{
public int Num { get; set; }
public void Method_1()
{
Console.WriteLine("X");
}
public virtual void Method_2()
{
Console.WriteLine(Num);
}
}
public class Y : X
{
public Y()
{
Num = 1000;
}
}
private static void Main(string[] args)
{
new Y().Method_2();
}
Run Code Online (Sandbox Code Playgroud)
我希望在书的肯定之后得到编译器错误,但我没有得到.代码运行并正确打印1000.
我的问题是:本书对于子类被强制使用base关键字意味着什么?我正在尝试重现这种情况.
我错过了什么?
我有通过网络服务收到的数据HTTPWebRequest.在我使用NewtonSoft.Deserialize自定义类型(具有公共字符串属性的简单类)解析它之后,我想使用LINQ- 更具体地说,我想对数据进行分组来操纵这些数据.
我的问题是,如果我按单个字符串属性进行分组,则分组工作正常
from x in myList
group x by x.myStr into grp
select grp;
Run Code Online (Sandbox Code Playgroud)
由于我想按更多列分组,我将返回一个自定义类型
new MyType { a = ..., b = ... }
Run Code Online (Sandbox Code Playgroud)
然而,该小组没有工作.我认为原因必须是编译器不知道如何比较这些对象 - 所以如果这种类型实现IEqualityComparer<MyType>它将解决它.
但不,它仍然没有相应的分组,它创建了几个具有完全相同的字符串值的键.
我正在分组的自定义类型就像
public class MyType
{
public string a;
public string b;
public string c;
}
Run Code Online (Sandbox Code Playgroud)
我错过了什么想法?
这是上述场景的具体示例:
//The type that models the data returned from the web service
public class MyClass
{
public string a { get; set; }
public string b …Run Code Online (Sandbox Code Playgroud) 在我的团队中有一个反复出现的问题让我疯狂.人们声称Team Foundation Server中的一些签到会覆盖以前的签入/存在代码.他们声称Get Latest Version在办理登机手续之前您总是需要做一件事.换句话说,运行get latest是正确办理登机手续的先决条件.
作为回应,我回复如下:TFS如果上面描述的确实发生,必须有一个我们遗漏的定义/设置/我们没有选中.有一个版本控制系统在登记时不会自动警告您有关代码冲突的问题(如果您在检查其他人检查的代码不同于您的代码之前)会有什么意义?我会理解是否存在设置此行为或该行为的设置(无论现在数据库中存在什么,都会检入,或者如果存在冲突并提示操作(合并)则发出警告).
我想明白:我错了吗?!这简直就是这样TFS吗?Get Latest在任何检查之前是强制性的,无论如何?!
作为旁注,如果在没有手动运行get latest的情况下签入是危险且危险的,为什么Microsoft不会将此作为默认行为?
提前致谢!
在 Visual Studio Code 中,我有一个特定的单元测试,无论结果是什么- 都标有问号。
我添加了其他测试,它们的行为符合预期(用绿色勾号或红色 x 标记)。
[Fact]
public async Task LinuxHelper_ExecuteInvalidCommandBash_ShouldFail()
{
//arrange
//act
//var bashExecutionResult = LinuxHelper.RunAsBash(@"dasda");
//assert
10.Should().Be(11);
//bashExecutionResult.Succeeded.Should().BeFalse();
//bashExecutionResult.Error.Should().NotBeNullOrEmpty();
//bashExecutionResult.ExitCode.Should().NotBe(0);
}
Run Code Online (Sandbox Code Playgroud)
使用C#, .NET Core Test ExplorerVSC 扩展,以及xUnit和FluentAssertions。
我有Umbraco 7网站和MVC.
我想对数据库执行一些自定义操作.
据我所知,我应该使用DbContext进行连接.
我已经引用了System.Data.Entity来获取DbContext类.但是,当我尝试使用DbContext时,我收到一个错误说法
The type or namespace name 'DbContext' could not be found (are you missing
a using directive or an assembly reference?)
Run Code Online (Sandbox Code Playgroud)
在我的模型名称空间中
public class umbracoDbDSN : DbContext
{
//some code
}
Run Code Online (Sandbox Code Playgroud)
你能让我知道我错过了什么吗?
谢谢
sql-server asp.net-mvc database-connection umbraco dbcontext
Oracle中为什么有3个逻辑不同对视图Ñ憩大号anguage小号upport?
我可以理解需要区分会话和数据库 - 允许客户端自定义设置。
Session 与 Instance 呢?
我运行了一个查询来比较它们之间的值,这是结果(我注意到 NLS_DATABASE_SETTINGS 有更多的参数,其他的所有参数加上更多,因此我将它作为我的起点进行外连接):
SELECT
db.parameter as parameter,
db.value as database_value,
s.value as session_value,
i.value as instance_value
FROM
nls_database_parameters db
LEFT JOIN
nls_session_parameters s
ON s.parameter = db.parameter
LEFT JOIN
nls_instance_parameters i
ON i.parameter = db.parameter
ORDER BY parameter
Run Code Online (Sandbox Code Playgroud)

我正在尝试深入挖掘并解决我的 pl/sql 开发人员客户端的问题,单独无法显示希伯来语字符。公司里的其他人都是。
更新:按照我在此处发布的解决方案,解决了希伯来语中显示字符的问题(这不是这里的问题)。
.NET Framework为什么同时提供这两种功能
System.Type.GenericTypeArguments
Run Code Online (Sandbox Code Playgroud)
和
System.Type.GetGenericArguments()
Run Code Online (Sandbox Code Playgroud)
哪个都返回Type[]给定泛型类型的类型参数(都作为)?
似乎属性和方法具有完全相同的功能,这意味着API的接口具有冗余/重复的功能?
我试图弄清楚用于查找的正则表达式与正确的N次出现匹配,而不是更少,而不是更多的一组字符.它看起来像一个非常简单的任务,但我无法找到适当的正则表达式.
更具体地说,我想要一个正则表达式,告诉一个给定的字符串是否包含正好3个数字 - 不是更少,而不是更多.
我以为我能够通过将3位数作为一组处理并在其后添加{1}的量词来实现它,但它不起作用.
或者,我预期[0-9] [0-9] [0-9]也能正常工作,但同样没有.两个正则表达式都返回相同的结果,输入设置为1,12,123,1234,12345.
下面是一个执行我尝试的代码示例,如上所述.
class Program
{
static void Main(string[] args)
{
List<Regex> regexes = new List<Regex> { new Regex("\\d{3}"), new Regex("[0-9][0-9][0-9]"), new Regex("(\\d{3}){1}") };
List<int> numbers = new List<int> { 1, 12, 123, 1234, 12345 };
foreach(Regex regex in regexes)
{
Console.WriteLine("Testing regex {0}", regex.ToString());
foreach (int number in numbers)
{
Console.WriteLine(string.Format("{0} {1}", number, regex.IsMatch(number.ToString()) ? "is a match" : "not a match"));
}
Console.WriteLine();
}
}
}
Run Code Online (Sandbox Code Playgroud)
上面程序的输出是:

显然,从所有输入值中只有123是匹配.将"123"单独视为匹配的正则表达式是什么?
好吧,ECMAScript 6Set允许将对象添加到集合中.
喜欢
var s = new Set();
var o = {a: 1, b: 2};
s.add(o);
s.add("c");
Run Code Online (Sandbox Code Playgroud)
确定是否存在"标量"元素(如c)是直截了当的:
s.has("c"); // true
Run Code Online (Sandbox Code Playgroud)
那对象元素呢?我认为提供has()与对象的toString()值将返回true,但它不会
o.toString() // -> "[object Object]"
s.has("[object Object]") // -> false
Run Code Online (Sandbox Code Playgroud)
如果Sets可以包含对象,那么它has()必须知道确定是否包含给定对象.但是怎么样?
更新:虽然上面描述的场景的解决方案也是直接的(s.has(o)),但是如果将动态添加到s,你没有参考?在这种情况下,你还能确定是否s包含该对象吗?
Visual Studio 2019给出了以下关于 private 的建议_myNum:改为使用auto-property。起初我很想这样做,摆脱这个private变量并拥有带有private set. 但这并没有提供相同的功能:我想要一个公共属性来公开这条给定的信息,并且只在一个可以设置这条数据的地方 - 构造函数,因此是关键字readonly。
换句话说,我是对的吗?这个建议并不总是正确的?
public class Foo
{
public int MyNum { get { return _myNum; } }
private readonly int _myNum;
public Foo(int num)
{
_myNum = num;
}
}
Run Code Online (Sandbox Code Playgroud)
应用自动完成建议,代码如下所示:
public int MyNum { get; }
public Foo(int num)
{
MyNum = num;
}
Run Code Online (Sandbox Code Playgroud) c# refactoring code-analysis visual-studio roslyn-code-analysis
c# ×5
.net ×1
asp.net-mvc ×1
constructor ×1
dbcontext ×1
ecmascript-6 ×1
generics ×1
javascript ×1
linq ×1
linq-group ×1
oracle ×1
refactoring ×1
regex ×1
sql-server ×1
system.type ×1
tfs ×1
umbraco ×1
xunit ×1