.NET中struct和class之间有什么区别?
我想在C#中将目录的全部内容从一个位置复制到另一个位置.
似乎没有办法使用System.IO没有大量递归的类来完成此操作.
VB中有一个方法,如果我们添加一个引用,我们就可以使用它Microsoft.VisualBasic:
new Microsoft.VisualBasic.Devices.Computer().
FileSystem.CopyDirectory( sourceFolder, outputFolder );
Run Code Online (Sandbox Code Playgroud)
这似乎是一个相当丑陋的黑客.有没有更好的办法?
我下面有一个标志枚举.
[Flags]
public enum FlagTest
{
None = 0x0,
Flag1 = 0x1,
Flag2 = 0x2,
Flag3 = 0x4
}
Run Code Online (Sandbox Code Playgroud)
我无法将if语句评估为true.
FlagTest testItem = FlagTest.Flag1 | FlagTest.Flag2;
if (testItem == FlagTest.Flag1)
{
// Do something,
// however This is never true.
}
Run Code Online (Sandbox Code Playgroud)
我怎样才能做到这一点?
我正在寻找一个清晰,简洁和准确的答案.
理想情况下,作为实际答案,虽然欢迎链接到良好的解释.
在C#6中有一个新功能:插值字符串.
这些允许您将表达式直接放入代码中,而不是依赖于索引:
string s = string.Format("Adding \"{0}\" and {1} to foobar.", x, this.Y());
Run Code Online (Sandbox Code Playgroud)
变为:
string s = $"Adding \"{x}\" and {this.Y()} to foobar.";
Run Code Online (Sandbox Code Playgroud)
但是,我们在使用逐字符串(主要是SQL语句)的多行中有很多字符串,如下所示:
string s = string.Format(@"Result...
Adding ""{0}"" and {1} to foobar:
{2}", x, this.Y(), x.GetLog());
Run Code Online (Sandbox Code Playgroud)
将这些恢复为常规字符串似乎很麻烦:
string s = "Result...\r\n" +
$"Adding \"{x}\" and {this.Y()} to foobar:\r\n" +
x.GetLog().ToString();
Run Code Online (Sandbox Code Playgroud)
如何同时使用逐字和插值字符串?
我有一个多层.Net 4.5应用程序调用一个方法使用C#的新async和await关键字挂起,我不明白为什么.
在底部我有一个异步方法来扩展我们的数据库实用程序OurDBConn(基本上是底层DBConnection和DBCommand对象的包装器):
public static async Task<T> ExecuteAsync<T>(this OurDBConn dataSource, Func<OurDBConn, T> function)
{
string connectionString = dataSource.ConnectionString;
// Start the SQL and pass back to the caller until finished
T result = await Task.Run(
() =>
{
// Copy the SQL connection so that we don't get two commands running at the same time on the same open connection
using (var ds = new OurDBConn(connectionString))
{
return function(ds);
} …Run Code Online (Sandbox Code Playgroud) 一些网站现在使用来自Tynt的JavaScript服务,该文本将文本附加到复制的内容.
如果您使用此网站从网站复制文本然后粘贴,则会获得指向文本底部原始内容的链接.
Tynt也会跟踪它.这是一个很好的技巧.
他们这样做的脚本令人印象深刻 - 而不是试图操纵剪贴板(只有旧版本的IE允许他们默认执行,哪些应该总是关闭)他们操纵实际选择.
因此,当您选择一个文本块时,额外内容将作为隐藏<div>添加到您的选择中.粘贴时,将忽略额外的样式,并显示额外的链接.
这对于简单的文本块实际上相当容易,但是当您考虑在不同浏览器中复杂HTML中的所有选择时,这是一场噩梦.
我正在开发一个Web应用程序 - 我不希望任何人能够跟踪复制的内容,我希望额外的信息包含一些上下文,而不仅仅是一个链接.在这种情况下,Tynt的服务并不合适.
有没有人知道一个开源JavaScript库(可能是一个jQuery插件或类似的)提供类似的功能,但不暴露内部应用程序数据?
我想要做的是这样的:我有枚举标记值的枚举.
public static class EnumExtension
{
public static bool IsSet<T>( this T input, T matchTo )
where T:enum //the constraint I want that doesn't exist in C#3
{
return (input & matchTo) != 0;
}
}
Run Code Online (Sandbox Code Playgroud)
那么我可以这样做:
MyEnum tester = MyEnum.FlagA | MyEnum.FlagB
if( tester.IsSet( MyEnum.FlagA ) )
//act on flag a
Run Code Online (Sandbox Code Playgroud)
不幸的是,C#的通用,其中约束没有枚举限制,只有类和结构.C#不会将枚举视为结构(即使它们是值类型),因此我无法像这样添加扩展类型.
有没有人知道解决方法?
我们正在研究日志查看器.该用户可以选择按用户,严重程度等进行过滤.在Sql中我会添加到查询字符串,但我想用Linq来做.我怎样才能有条件地添加where-clause?
我正在编程的一些网站正在使用ASP.NET MVC和WebForms.
我有局部视图,我想将其包含在webform中.部分视图有一些必须在服务器中处理的代码,因此使用Response.WriteFile不起作用.它应该与禁用javascript一起使用.
我怎样才能做到这一点?
c# ×6
.net ×4
enums ×2
flags ×2
.net-3.5 ×1
asp.net ×1
asp.net-mvc ×1
async-await ×1
asynchronous ×1
attributes ×1
boxing ×1
c#-5.0 ×1
c#-6.0 ×1
class ×1
clipboard ×1
copy ×1
glossary ×1
javascript ×1
linq ×1
linq-to-sql ×1
struct ×1
unboxing ×1
value-type ×1
webforms ×1