当我尝试使用Visual Studio 2012在C#中注释掉一些突出显示的文本(使用菜单顶部的注释按钮)时,它会用双斜杠注释掉整行.但是当我在同一个IDE中使用C++时,它只会使用注释掉突出显示的文本
/* */
是否有VS命令/快捷键/按钮用/*...*/C#注释所选文本(部分行)?

我的标题是我的主要问题.下面的代码显示了我想要做的事情,但它会导致错误.
class B
{
public:
void DoSomething(void (*func)())
{
func();
}
};
class A
{
public:
int x;
void Start(B* b)
{
auto func = [this]()->void
{
this->x++;
};
b->DoSomething(func);
}
};
Run Code Online (Sandbox Code Playgroud)
如果我删除"this"关键字,那么程序可以工作,但是我不能引用x变量.
那我该怎么做呢?
我正在测试Google Compute Engine,我用Ubuntu OS创建了一个VM.当我连接到它时,通过单击此Connect SSH按钮,它将打开一个控制台窗口.
这是你得到的联系吗?
如何打开带有GUI的真实屏幕?我不想要控制台.
例如,在 jQuery 中,如果我想要所有<div>和<p>元素,我会这样做:
var $x = $("p, div");
Run Code Online (Sandbox Code Playgroud)
然后如果我想要<div>x 中的所有元素,那么我这样做:
var $divs = $x.filter("div");
Run Code Online (Sandbox Code Playgroud)
那么我如何filter在 vanilla JavaScript 中做这个简单的事情呢?
例如,要选择全部<div>和<p>,然后我可以这样做:
var x = document.querySelectorAll("div, p");
Run Code Online (Sandbox Code Playgroud)
但是 vanilla JavaScript 没有像 jQuery 那样的过滤功能,所以我不能这样做:
var divs = x.filter("div"); // ERROR
Run Code Online (Sandbox Code Playgroud)
希望有人能帮我解决这个问题:-)
提前致谢。
更新
一些评论/答案建议使用.tagName == "DIV" 之类的方法来查找 div,但是,我想要一个像 jQuery 一样带有字符串选择器的解决方案。
原因是因为我还想使用属性、类甚至多个选择器进行过滤,您可以在其中放置逗号。并且字符串选择器必须是动态的。
这意味着,我不知道选择器中有什么。它可以是“div[foo='asd'], .bar”或“#hello, [xx='yy'], p”
所以我不能硬编码 .tagName == "DIV",因为我不知道选择器字符串中的内容。
我只是想知道C#List是否像C++ List一样.
在C++中删除大列表中间的元素很快,因为我知道元素只是指向下一个元素.
因此,在大型C#列表中删除元素时,是否与C++中的元素相同?或者C#列表更像是带有索引的C++向量,因为您可以获得C#列表中元素的索引号.
我想了解为什么C#语言决定将此测试表达式作为错误.
interface IA { }
interface IB { }
class Foo : IA, IB { }
class Program
{
static void testFunction<T>(T obj) where T : IA, IB
{
IA obj2 = obj;
if (obj == obj2) //ERROR
{
}
}
static void Main(string[] args)
{
Foo myFoo = new Foo();
testFunction(myFoo);
Console.ReadLine();
}
}
Run Code Online (Sandbox Code Playgroud)
在testFunction中,我可以创建一个名为obj2的对象,并在不强制转换的情况下将其隐式设置为obj.但是为什么我不能检查这两个对象,看看它们是否相同,没有铸造它?他们显然实现了相同的接口,为什么它是一个错误?
如果我有 pfx 证书,如何使用 https 中的自定义域在本地运行 Blazor WebAssembly(客户端)?
在 Blazor ServerSide 中,它很容易设置,因为就像普通的 ASP.NET Core 应用程序一样,因为我们有 IHostBuilder,在那里我们可以设置 https 证书路径。
但是 Blazor WebAssembly 客户端呢?
在通用列表中是否有一个内置函数可以从特定索引中的另一个列表中添加一个范围,还是我必须编写自己的?
例如:
List<int> list1 = new List<int>();
List<int> list2 = new List<int>();
list1.Add(10);
list1.Add(20);
list1.Add(30);
list2.Add(100);
//list2.AddRange(list1, 1) Add from list1 from the index 1 till the end
Run Code Online (Sandbox Code Playgroud)
在这个例子中,list2应该有3个元素:100,20和30.
我应该自己写还是有内置功能可以做到这一点?
我在服务器中有一个数据库,似乎async方法不起作用.
这是我的代码:
static async void Example()
{
string connectionString =
"Server=mydomainname.com;" +
"Port=3306;" +
"Database=scratch;" +
"Uid=Assassinbeast;" +
"Password=mypass123;" +
"AllowUserVariables= true;";
MySql.Data.MySqlClient.MySqlConnection sqConnection = new MySql.Data.MySqlClient.MySqlConnection(connectionString);
await sqConnection.OpenAsync();
Console.Write("Opened. Now Click to close");
Console.ReadLine();
sqConnection.Close();
}
static void Main(string[] args)
{
Console.ReadLine();
Example();
Console.WriteLine("Done");
Console.ReadLine();
}
Run Code Online (Sandbox Code Playgroud)
在"await"语句中,它实际上应该跳回Main()函数并写出"Done".但它不这样做.它只是同步运行,就像它不是异步方法一样,一旦功能完全完成,它将首先写入"完成".
那我做错了什么?这是一个错误吗?
UPDATE
好的,所以在我得到一些答案之后,我实际上仍然看不到OpenAsync()和Open()之间的任何区别.
我开始尝试测试更多的东西,我想我可以得出结论,异步方法不起作用
这是我的新代码:
static async Task Example()
{
string connectionString =
"Server=mydomainname.com;" +
"Port=3306;" +
"Database=scratch;" +
"Uid=Assassinbeast;" +
"Password=mypass123;" +
"AllowUserVariables= true;";
using (var sqConnection = new MySql.Data.MySqlClient.MySqlConnection(connectionString)) …Run Code Online (Sandbox Code Playgroud) LINQ方法语法确实有这样的异步方法:
var peter = await peopleCollection.Find(x => x.Name == "Peter").FirstOrDefaultAsync();
Run Code Online (Sandbox Code Playgroud)
但它在查询语法中不存在,如下所示:
var peter = await (from x in collection.AsQueryable()
where x.Name == "Peter"
select x).FirstOrDefaultAsync(); //COMPILETIME ERROR
Run Code Online (Sandbox Code Playgroud)
真的是这样吗?
如果你想测试,一个重要的注意事项:如果你已经引用了实体框架库并使用了 System.Data.Entity; 语句,则FirstOrDefaultAsync()在编译时存在,但它在运行时会给出和错误。
我真的不明白为什么,但似乎内部访问修饰符不起作用:S
我看过这个教程:http: //msdn.microsoft.com/en-us/library/7c5ka91b(v=vs.110).aspx
但对我来说,它编译.另外,我买了一本图书画报C#2012.作者解释了内部课程等等......但是,它仍然没有做任何事情.
这是我的完整代码,即使是内部访问也是如此.
//Program.cs
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
Class1 myclass = new Class1(); //works
myclass.display(); //works
myclass.display2(); //works even though its not public :S
Console.Read();
}
}
}
Run Code Online (Sandbox Code Playgroud)
-
//Class1.cs
namespace ConsoleApplication1
{
internal class Class1
{
public void display()
{
Console.WriteLine("display()");
}
internal void display2()
{
Console.WriteLine("display2()");
}
}
}
Run Code Online (Sandbox Code Playgroud)
我甚至可以访问函数internal void display2():S
当我创建一个嵌套类并将其命名为B并创建一个名为B的变量时,当我尝试使用"this"时使用它.那就是它的暧昧.
每当你写"这个"时,它不应该是一个错误.它显然是你正在尝试使用的变量而不是类.
当我将B类放在A类之外时,它就起作用了,所以我无法真正看到为什么c#创建者会因为它的嵌套而使它变得模棱两可.
