using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;
Run Code Online (Sandbox Code Playgroud)
我必须将上面的代码放在几乎每个.cs文件中.有什么办法可以避免吗?
当使用以下方式时,"使用"的目的是什么:
一个例子就是这个,(一个答案 - @richj - 使用这个代码来解决一个问题)
private Method(SqlConnection connection)
{
using (SqlTransaction transaction = connection.BeginTransaction())
{
try
{
// Use the connection here
....
transaction.Commit();
}
catch
{
transaction.Rollback();
throw;
}
}
}
Run Code Online (Sandbox Code Playgroud)
其他示例我在MICROSOFT支持网站上阅读时发现
public static void ShowSqlException(string connectionString)
{
string queryString = "EXECUTE NonExistantStoredProcedure";
StringBuilder errorMessages = new StringBuilder();
using (SqlConnection connection = new SqlConnection(connectionString))
{
SqlCommand command = new SqlCommand(queryString, connection);
try
{
command.Connection.Open();
command.ExecuteNonQuery();
}
catch (SqlException ex)
{
for (int i = 0; i < ex.Errors.Count; …Run Code Online (Sandbox Code Playgroud) #include <iostream>
#include <cmath>
#include <vector>
using namespace std;
int square(int a){
return a*a;
}
struct Point{
int x,y;
};
int distance (const Point& a,const Point& b){
int k=(int) sqrt((float)((a.x-b.x)*(a.x-b.x))+((a.y-b.y)*(a.y-b.y)));
return k;
}
int main(){
vector<Point>a(10);
for (int i=0;i<10;i++){
cin>>a[i].x>>a[i].y;
}
int s=0;
int s1;
int k=0;
for (int i=1;i<10;i++){
s+=square(distance(a[0],a[i]));
}
for (int i=1;i<10;i++){
s1=0;
for (int j=0;j<10;j++){
s1+=square(distance(a[i],a[j]));
if (s1<s) { s=s1; k=i;}
}
}
cout<<k<<"Points are:";
cout<<a[k].x;
cout<<a[k].y;
return 0;
}
Run Code Online (Sandbox Code Playgroud)
我有以下代码,但这里是错误列表
1>------ Build started: Project: distance, …Run Code Online (Sandbox Code Playgroud) c++ compiler-errors using-directives overload-resolution name-lookup
为什么我的应用程序不允许我使用以下名称空间:
using Microsoft.AspNet.Identity;
Run Code Online (Sandbox Code Playgroud)
有什么办法可以摆脱这种情况Visual Studio 2015吗?
我有两个不同的命名空间,每个都有一个Thing类:
namespace First.Second.Third
{
public class Thing { }
}
namespace Fourth.Fifth.Sixth
{
public class Thing { }
}
Run Code Online (Sandbox Code Playgroud)
现在我尝试在Thing别处使用,当然编译器抱怨由于对该类的模糊引用:
namespace ConsoleApp1
{
using First.Second.Third;
using Fourth.Fifth.Sixth;
internal static class MainEntryPoint
{
internal static void Main(string[] args)
{
var x = new Thing(); // Complaint.
}
}
}
Run Code Online (Sandbox Code Playgroud)
如果我在using指令中的一个名称空间中添加别名,编译器错误就会消失:
using MyAlias = First.Second.Third;
using Fourth.Fifth.Sixth;
Run Code Online (Sandbox Code Playgroud)
现在编译器认为我指的是Fourth.Fifth.Sixth.Thing什么时候var x = new Thing();.
为什么编译器只是通过向其中一个命名空间添加别名来解决歧义?为什么它会自动选择我没有别名的命名空间?
我希望在SO和其他地方之前有很多文档和覆盖很多次,但我找不到答案.如果有人可以帮我找到傻瓜吗?
编辑:我猜不到每个人都在同一个页面上.这是一个可能有帮助的真实示例:
如果我有两个名叫"鲍勃"的人,我只是说"在这里,把它交给鲍勃",你就不会知道该给谁.如果我说,一个是"鲍勃史密斯"而另一个是"鲍勃约翰逊",我当然可以说"在这里,把它交给鲍勃史密斯".现在,如果我说,"让我们用一个新名字给Bob Smith打电话:Bob Brady".如果我然后说"在这里,给这个"鲍勃",那仍然是模棱两可的.看到我的观点?
这是代码示例:
#include<iostream>
using namespace std;
namespace B
{
int ohoh=2;
}
namespace A
{
int ohoh=666;
namespace C
{
//using B::ohoh;(as if declared by using directive) //why does the lookup not stops here?
int foo()
{
using namespace B;
cout<<ohoh<<endl;
}
}
}
int main()
{
A::C::foo();
}
Run Code Online (Sandbox Code Playgroud)
输出是666但不是2.为什么?
引自cppref
对于非限定名称,即名称不在范围解析运算符::右侧的名称,名称查找检查范围如下所述,直到它找到任何类型的至少一个声明,此时查找停止并且不会审查其他范围. (注意:从某些上下文中查找会跳过一些声明,例如,查找用于左侧的名称:忽略函数,变量和枚举器声明,查找用作基类说明符的名称会忽略所有非类型声明)
出于非限定名称查找的目的,using命令指定的命名空间中的所有声明都显示为在最近的封闭命名空间中声明,该命名空间直接或间接包含using-directive和指定命名空间.
从上面引用的段落中,名称查找应该停在最近的位置namespace C,我在代码中注释了.为什么它不会停止并找到A::ohoh?
顺便说一句,我认为我应该尽可能少地使用using指令.
我在我的webform上使用gridview,我想使用asp.net c#将数据从SQL服务器导出到excel,我使用的是ClosedXML.Excel,但错误是
找不到类型或命名空间名称'ClosedXML'(您是否缺少using指令或程序集引用?)
我怎么能删除这个?
c# ×5
c++ ×2
name-lookup ×2
.net ×1
alias ×1
ambiguous ×1
asp.net ×1
connection ×1
namespaces ×1
sql ×1