从msdn我得到这个:
#pragma warning disable warning-list
#pragma warning restore warning-list
Run Code Online (Sandbox Code Playgroud)
在示例中,使用了disable
和restore
.restore
如果我想要为整个文件禁用它,是否有必要?
就像,如果我不恢复,它携带多远?之后编译的所有内容都禁用警告吗?或者仅仅是该文件的其余部分?还是被忽略了?
为谓词助手类编写一些XML文档.但我无法弄清楚我可以参考一个Expression<Func<T, bool>>
没有得到语法错误.它甚至可能吗?我试过这个:
<see cref="Expression{Func{T, bool}}"/>
Run Code Online (Sandbox Code Playgroud)
但我得到一条红色的波浪线{T, bool}}
.这有效:
<see cref="Expression{TDelegate}"/>
Run Code Online (Sandbox Code Playgroud)
有人有线索吗?
更新:
给出的答案(我接受了)似乎确实奏效了.但是现在我已经开始收到很多关于无法解决的问题的警告.我有一个叫做类ExpressionBuilder<T>
,其作品有Expression<Func<T, bool>>
很多.所以我当然想在我的XML评论中引用它.
我尝试了两个我知道的版本:
<see cref="Expression<Func<T, Boolean>>"/>
<see cref="Expression{Func{T, Boolean}}"/>
Run Code Online (Sandbox Code Playgroud)
但是没有工作.(在最后一个问题上,ReSharper下了一个蓝色的波浪形,{T,Boolean}}
我在编辑过程中得到两个警告,我用过它时说:
- 关于'blah blah'的XML注释具有无法解析的cref属性'Expression>'
- 类型参数声明必须是标识符而不是类型.另请参见错误CS0081.
在我试图引用的某个地方有同样的问题Range<Nullable<DateTime>>
(也Range<DateTime?>
没有用.{}和with < >
)
我不应该提到这些种类的仿制药吗?
有一种方法可以将CSV数据导入数据库.我使用了一些基本的验证
class CsvImportController extends Controller
{
public function import(Request $request)
{
$this->validate($request, [
'csv_file' => 'required|mimes:csv,txt',
]);
Run Code Online (Sandbox Code Playgroud)
但之后事情可能会因为更复杂的原因而出错,在兔子洞的下方,会抛出某种异常.我不能在validate
这里使用这个方法编写适当的验证内容,但是,我真的很喜欢Laravel在验证失败时如何工作以及将错误嵌入到刀片视图等中是多么容易,所以...
是否有一种(最好是干净的)手动告诉Laravel"我知道我validate
现在没有使用你的方法,但我真的希望你在这里公开这个错误,好像我做了"?有什么我可以回来的,我可以用东西包装的例外吗?
try
{
// Call the rabbit hole of an import method
}
catch(\Exception $e)
{
// Can I return/throw something that to Laravel looks
// like a validation error and acts accordingly here?
}
Run Code Online (Sandbox Code Playgroud) 我想让程序员和我自己知道一个方法不需要null
,如果你确实发送null
它,结果将不会很好.
有一个NotNullAttribute
和CanBeNullAttribute
在Lokad共享库,在Lokad.Quality
命名空间.
但是这有什么作用呢?我查看了这两个属性的源代码,它看起来像这样:
[AttributeUsage(AttributeTargets.Method | AttributeTargets.Parameter |
AttributeTargets.Property | AttributeTargets.Delegate |
AttributeTargets.Field, AllowMultiple = false, Inherited = true)]
[NoCodeCoverage]
public sealed class NotNullAttribute : Attribute
{
}
[AttributeUsage(AttributeTargets.Method | AttributeTargets.Parameter |
AttributeTargets.Property | AttributeTargets.Delegate |
AttributeTargets.Field, AllowMultiple = false, Inherited = true)]
[NoCodeCoverage]
public sealed class CanBeNullAttribute : Attribute
{
}
Run Code Online (Sandbox Code Playgroud)
继承自的两个空类Attribute
.它们是如何使用的?你需要查找xml文档并知道它在那里吗?因为我试图制作我自己的属性副本并使用Lokad版本,但是当我尝试直接发送null时,我没有收到任何消息.既不是来自ReSharper也不是来自VS. 实际上我有点期待.但他们是如何使用的呢?如果我尝试发送一些空的东西,我可以以某种方式让VS为我生成警告吗?或者它只是在某种测试框架中使用?要么?
说我有这个简单的方法:
public IEnumerable<uint> GetNumbers()
{
uint n = 0;
while(n < 100)
yield return n++;
}
Run Code Online (Sandbox Code Playgroud)
你会如何使这个线程安全?而且我的意思是你会得到一次枚举器,并且有多个线程处理所有数字而没有任何人得到重复.
我想在某个地方需要使用一个锁,但是哪个锁必须使迭代器块成为线程安全的呢?一般来说,如果你想要一个线程安全,你需要记住IEnumerable<T>
什么?或者更确切地说,我猜这将是一个线程安全IEnumerator<T>
...?
有人可以帮我解释一下吗?我有两个代码片段,一个像我期望的那样工作,但另一个没有.
这有效
$a = array('a' => 1, 'b' => 2);
$b = array('c' => 3);
$c = $a + $b;
print_r($c);
// Output
Array
(
[a] => 1
[b] => 2
[c] => 3
)
Run Code Online (Sandbox Code Playgroud)
事实并非如此
$a = array('a', 'b');
$b = array('c');
$c = $a + $b;
print_r($c);
// Output
Array
(
[0] => a
[1] => b
)
Run Code Online (Sandbox Code Playgroud)
这里发生了什么??为什么第二个版本也没有将两个数组一起添加?我误解了什么?我应该做什么呢?或者它是PHP中的错误?
在C#中,您可以将类标记internal
为只能从同一个包中访问它.Java中有类似的东西吗?
好吧,这让我烦恼,我只是想不通有什么问题......
我有两种形式.第一个表单只有一个简单的按钮,它打开另一个作为对话框,如下所示:
using (Form2 f = new Form2())
{
if (f.ShowDialog() != DialogResult.OK)
MessageBox.Show("Not OK");
else
MessageBox.Show("OK");
}
Run Code Online (Sandbox Code Playgroud)
第二个就是它Form2
,上面有两个按钮.我所做的就是将表单AcceptButton设置为一个,将CancelButton设置为另一个.在我的脑海中,这是完成这项工作所需要的一切.但是当我运行它时,我点击打开Form2的按钮.我现在可以单击一个设置为CancelButton,然后我收到"Not OK"消息框.但当我点击一套作为AcceptButton时,没有任何反应?Form2的InitializeComponent代码如下所示:
private void InitializeComponent()
{
this.button1 = new System.Windows.Forms.Button();
this.button2 = new System.Windows.Forms.Button();
this.SuspendLayout();
//
// button1
//
this.button1.Location = new System.Drawing.Point(211, 13);
this.button1.Name = "button1";
this.button1.Size = new System.Drawing.Size(75, 23);
this.button1.TabIndex = 0;
this.button1.Text = "button1";
this.button1.UseVisualStyleBackColor = true;
//
// button2
//
this.button2.DialogResult = System.Windows.Forms.DialogResult.Cancel;
this.button2.Location = new System.Drawing.Point(130, 13);
this.button2.Name = "button2";
this.button2.Size = new System.Drawing.Size(75, …
Run Code Online (Sandbox Code Playgroud) 是否有一个内置的linq方法的东西,我可以用来找出两个序列是否包含相同的项目,而不考虑订单?
例如:
{1, 2, 3} == {2, 1, 3}
{1, 2, 3} != {2, 1, 3, 4}
{1, 2, 3} != {1, 2, 4}
Run Code Online (Sandbox Code Playgroud)
你有SequenceEquals,但是我必须首先对两个序列进行排序,不是吗?
无法确定条件表达式的类型,因为'lambda expression'和'lambda expression'之间没有隐式转换
说什么?有人可以向我解释这个编译错误吗?这是产生它的代码:
protected override Func<System.IO.Stream> GetStream()
{
return someBool
? () => EmbeddedResourceExtractor.GetFile("SomeFile1.ext")
: () => EmbeddedResourceExtractor.GetFile("SomeFile2.ext");
}
Run Code Online (Sandbox Code Playgroud)
这不是:
protected override Func<System.IO.Stream> GetStream()
{
return () => EmbeddedResourceExtractor.GetFile("SomeFile1.ext");
}
Run Code Online (Sandbox Code Playgroud)
这两个都没有:
protected override Func<System.IO.Stream> GetStream()
{
if(someBool)
return () => EmbeddedResourceExtractor.GetFile("SomeFile1.ext");
return () => EmbeddedResourceExtractor.GetFile("SomeFile2.ext");
}
Run Code Online (Sandbox Code Playgroud) c# ×7
php ×2
arrays ×1
attributes ×1
class ×1
exception ×1
generics ×1
ienumerable ×1
internal ×1
java ×1
lambda ×1
laravel ×1
linq ×1
modal-dialog ×1
null ×1
pragma ×1
resharper ×1
validation ×1
winforms ×1