在Tuples之前,我曾经创建一个class及其变量,然后从这个类创建对象,并使该对象成为某些函数的返回类型.
现在用的元组,我可以做同样的在C#7.0,我们可以将元组性质可以理解的名称(这是之前item1,item2等..)
所以现在我想知道,我应该何时使用元组,何时应该在c#7.0中创建一个类?
阅读了很多关于Null传播算子的内容?.,我没有回答它是否有助于以下场景.
抛出的代码:
int[] values = null;
foreach ( var i in values ) // Throws since values is null.
{
// ...
}
Run Code Online (Sandbox Code Playgroud)
为了使其工作,我必须null在访问values变量之前添加一个检查.
很可能上述代码超出了Null传播运算符的设计考虑范围.不过,可以肯定的是,我不得不问.
我的问题:
尝试null在foreach循环中访问集合时,Null传播运算符是否有用?
我正在尝试在VS2015 c#交互式窗口中运行一些代码,该窗口使用存储在我正在使用该#r函数引用的dll的app.config文件中的连接字符串.
如果我查看其中ConfigurationManager有一个连接字符串,但它是一个不同的,它必须从另一个配置文件引用.
SvnUpdateArgs asdf = new SvnUpdateArgs();
asdf.AllowObstructions = false;
asdf.Depth = SvnDepth.Infinity;
asdf.IgnoreExternals = false;
asdf.UpdateParents = true;
asdf.Revision = SvnRevision.Head;
asdf.Conflict += new EventHandler<SvnConflictEventArgs>(asdf_Conflict);
asdf.Notify += new EventHandler<SvnNotifyEventArgs>(asdf_Notify);
asdf.Progress += new EventHandler<SvnProgressEventArgs>(asdf_Progress);
SvnUpdateResult res;
client.Status(dir, new EventHandler<SvnStatusEventArgs>(Status_Hook));
if (client.Update(dir, asdf, out res))
{
Console.WriteLine("Updated");
Console.WriteLine(res.Revision);
Console.WriteLine(res.ResultMap);
}
static void asdf_Conflict(object sender, SvnConflictEventArgs e)
{
e.Choice = SvnAccept.TheirsFull;
}
Run Code Online (Sandbox Code Playgroud)
所以我看到更新已编写,但现有文件未更新.如果某些文件丢失 - 它们将被下载.但现有文件未更新.
我很生气,请帮助我,我的英雄!
我通过创建了一个简单的控制台应用程序dotnet new console
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>netcoreapp3.1</TargetFramework>
</PropertyGroup>
</Project>
Run Code Online (Sandbox Code Playgroud)
然后我在另一个应用程序中编写了一段代码来获取Roslyn的编译结果
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>netcoreapp3.1</TargetFramework>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="CommandLineParser" Version="2.8.0" />
<PackageReference Include="McMaster.Extensions.CommandLineUtils" Version="3.0.0" />
<PackageReference Include="Microsoft.CodeAnalysis.Workspaces.Common" Version="3.6.0-4.final" />
<PackageReference Include="Microsoft.CodeAnalysis.Workspaces.MSBuild" Version="3.6.0-4.final" />
<PackageReference Include="Microsoft.CodeAnalysis.CSharp.Workspaces" Version="3.6.0-4.final" />
<PackageReference Include="Microsoft.Build" Version="16.5.0" />
<PackageReference Include="PowerArgs" Version="3.6.0" />
</ItemGroup>
</Project>
Run Code Online (Sandbox Code Playgroud)
var workspace = MSBuildWorkspace.Create();
workspace.LoadMetadataForReferencedProjects = true;
var project = workspace.OpenProjectAsync(@"C:\...\Desktop\sample\sample.csproj").Result;
var compilation = project.GetCompilationAsync().Result;
Run Code Online (Sandbox Code Playgroud)
但是Documents的长度是0所以我又写了一段代码来找出问题所在
var diagnostics = workspace.Diagnostics;
foreach (var diagnostic in diagnostics)
{
Console.WriteLine(diagnostic.Message);
}
Run Code Online (Sandbox Code Playgroud)
错误是(VS):
Msbuild failed …Run Code Online (Sandbox Code Playgroud) 我想FlipView从用户的输入(例如鼠标滚轮和触摸屏)禁用我的所有导航(水平滚动).
flipview应该改变其选定索引的唯一方法是以编程方式,我已经删除了FlipView风格中的侧边按钮.
我尝试改变ScrollViewer其风格的一些属性,但我无法阻止一切.任何人都可以提示我正确而干净的方法吗?
我试图阻止特定角色(比如 RoleA)中的特定用户访问特定操作。允许匿名用户访问,但不允许 RoleA 中的用户访问该操作。
所以我做了这样的事情:
[AllowAnonymous]
[CustomAuthorize(Roles="RoleB,RoleC")]
public ActionResult MyAction(){
//irrelevant
}
Run Code Online (Sandbox Code Playgroud)
但是,CustomAuthorize当[AllowAnonymous]存在时,动作过滤器永远不会被击中。
那么[AllowAnonymous]覆盖[CustomAuthorize]吗?
我有一个包含许多 Visual Studio 项目的存储库,我想将它们提取到它们自己的解决方案和存储库中,但我不想丢失历史记录。
有没有一种方法可以从当前的存储库创建一个具有完整历史记录但仅包含我选择的文件夹的存储库?
我可以克隆存储库并删除我不需要的内容,但我希望节省一些空间。
我试图检索属性的变量名称,而不是值.我目前正在使用反射,但如果有人有其他建议,将非常感谢.
我有三节课
A:
class A
{
public B bObject;
int Number { return bObject.number; } //returns 3
}
Run Code Online (Sandbox Code Playgroud)
B:
class B
{
public int number = 3;
}
Run Code Online (Sandbox Code Playgroud)
C:
class C
{
public void myMethod()
{
A aObject = new A();
var aNumber = aObject
.GetType()
.GetProperty("Number")
.GetValue(aObject, null);
//this is the value. aNumber = 3.
var objName = nameof(aNumber); //returns aNumber
}
Run Code Online (Sandbox Code Playgroud)
我希望objName返回字符串"bObject.number",即在属性中调用的变量.这可能与我目前的设置有关,如果没有,是否有人有建议?
我宁愿在B中没有另一个方法来返回"nameof(bObject)+ nameof(bObject.number)"然后由于冗余而调用该方法和prop.谢谢你的时间.
经验法则说:如果它不是与UI相关的方法,请使用Task.ConfigureAwait(false).
如果我有接受一个接口PCL核心库IUIAccess.然后核心库中的视图模型有一个方法:
public Task ViewModelLoginAsync()
{
bool success = await loginService.ServiceLoginAsync();
if(!success)
{
uiAccess.ShowInfoDialog("Login failed.");
}
}
Run Code Online (Sandbox Code Playgroud)
IUIAccess会UIAlertView在iOS上显示一个.
我的假设现在是:如果我打电话ViewModelLoginAsync给我,UIViewController我不应该配置为等于FALSE.它显然是UI代码.但是,调用ServiceLoginAsync可以使用configure await false.它是否正确?由于性能,内存使用情况,这只是好的做法还是真的推荐......?
c# ×6
roslyn ×2
asp.net ×1
asp.net-mvc ×1
async-await ×1
c#-6.0 ×1
c#-7.0 ×1
git ×1
msbuild ×1
nameof ×1
null ×1
properties ×1
reflection ×1
sharpsvn ×1
svn ×1
svn-update ×1
tuples ×1
valuetuple ×1
variables ×1
xamarin ×1
xaml ×1