我过去从不需要使用不安全的东西,但是现在我需要它来处理一个操纵位图的指针.
我找不到任何其他方面的文档,但我想更好地理解不安全是如何工作的,如果在循环内部或外部使用它会有什么不同.
做得更好:
unsafe
{
for (int x = 0; x < maxX; x++)
{
for (int y = 0; y < maxY; y++)
{
//Unsafe pointer operations here.
}
}
}
Run Code Online (Sandbox Code Playgroud)
还是做?:
for (int x = 0; x < maxX; x++)
{
for (int y = 0; y < maxY; y++)
{
unsafe
{
//Unsafe pointer operations here.
}
}
}
Run Code Online (Sandbox Code Playgroud) 我遇到了一种情况,我想将Prefer 32位设置为true.但在Visual Studio 2012中,它显示为已禁用.而且无论我做什么,它都无法启用.
我读到任何带有首选32位的CPU都是所有新项目的默认值.那么,我应该假设虽然它被禁用但它被设置为true?那怎么能把它设置为任何CPU?
在AnyAppU真正意味着.NET 4.5和Visual Studio 11以及Stack Overflow中的许多其他帖子和问题中,它说:
总的来说,/ platform C#编译器交换机现在有五个选项:x86,Itanium,x64,anycpu和anycpu 32bit首选
更重要的是,我有一些同事已经向我提到,过去那个复选框已启用(可能是错误的?).
为什么禁用了Prefer 32位复选框,如何再次启用它?
我的处理器是64位,我已将Update2应用于Visual Studio 2012.
在工作中,我们有一个ClickOnce应用程序,当客户端尝试安装时,它会抛出异常:
从文件中读取异常:/ FILEPATH:清单可能无效或无法打开文件.
清单XML签名无效.
无法为提供的签名算法创建SignatureDescription.
为了解决这个问题,我们最终使用了另一个证书文件,并且工作正常(重新签署了清单).
但是我们无法理解为什么在开发人员机器中安装应用程序(甚至是不使用该应用程序的开发人员)会起作用,但它不适用于客户端的机器?
我们没有太多关于如何创建证书或ClickOnce包的信息,因为执行该证书的人已经离开并且没有留下关于它的文档.
正在使用的证书没有密码,普通用户没有管理员权限.
从Stack Overflow问题Manifest XML签名无效,我猜测问题可能是他们使用.NET Framework 4.5 创建项目和证书,然后当他们将应用程序设置为使用.NET Framework 4.0运行时,他们没有更改签名算法.但后来我认为它不应该对开发人员起作用.
您可以给我的任何见解将不胜感激.
我正在使用C++/CLI项目,该项目在Visual Studio 2012中包装C++本机库.
我的C++/CLI项目有一个AssemblyInfo.cpp.我在那里设置了所有字段,其中包括"AssemblyVersionAttribute".但是,当我在Windows资源管理器中构建项目并检查其属性时,版本信息为空.
这是我的第一个C++/CLI项目,我一直在查看项目属性中的所有选项,但我找不到任何可用于设置版本的选项.
如何设置C++/CLI项目的版本?
更新
我将添加AssemblyInfo.cpp的内容.我刚刚填写了现有的字段,这是在我创建项目时自动生成的.
using namespace System;
using namespace System::Reflection;
using namespace System::Runtime::CompilerServices;
using namespace System::Runtime::InteropServices;
using namespace System::Security::Permissions;
[assembly:AssemblyTitleAttribute("MyTitle")];
[assembly:AssemblyDescriptionAttribute("")];
[assembly:AssemblyConfigurationAttribute("")];
[assembly:AssemblyCompanyAttribute("")];
[assembly:AssemblyProductAttribute("MyProduct")];
[assembly:AssemblyCopyrightAttribute("Copyright © 2014")];
[assembly:AssemblyTrademarkAttribute("Inc")];
[assembly:AssemblyCultureAttribute("")];
[assembly:AssemblyVersionAttribute("3.9.0")];
[assembly:ComVisible(false)];
[assembly:CLSCompliantAttribute(true)];
[assembly:SecurityPermission(SecurityAction::RequestMinimum, UnmanagedCode = true)];
Run Code Online (Sandbox Code Playgroud) 我正在创建大量脚本,有时为了检查表是否正在根据需要进行更新,我在运行时写了几个SELECT语句.
在SQL SERVER中,您可以编写如下内容:
SELECT Column1, *
FROM MY_TABLE
Run Code Online (Sandbox Code Playgroud)
这对于可见性原因很有用,但是在ORACLE中似乎没有用,除了手动写下所有列名之外,我不知道如何实现它.
你怎么能在oracle中做到这一点?
我知道我们不应该在我们的生产脚本等中包含这样的查询.我正在尝试在运行我的脚本时动态使用它.在不同的点上,我更感兴趣的是看到某些列的信息,与其他列相关,但我仍然希望看到所有列.
我是新的使用自定义ModelBinders,我一直在环顾四周,我找不到任何与此特定案例相关的帖子.
我有一个像这样的实体:
public class DynamicData
{
public IList<DynamicDataItem> DynamicDataItems{get;set;}
}
Run Code Online (Sandbox Code Playgroud)
在视图中我绑定它如下:
@Html.EditorFor(model => model.DynamicDataItems);
Run Code Online (Sandbox Code Playgroud)
我在DynamicDataItems类中有特殊信息,我想以特定的方式检索,所以我创建了自己的Model Binder.
public class DynamicDataItemBinder : IModelBinder
{
public object BindModel(ControllerContext controllerContext,
ModelBindingContext bindingContext)
{
var key = bindingContext.ModelName;
var valueProviderResult = bindingContext.ValueProvider
.GetValue(key);
if (valueProviderResult == null ||
string.IsNullOrEmpty(valueProviderResult
.AttemptedValue))
{
return null;
}
//Here retrieve my own Information
return DynamicDataItem;
}
}
Run Code Online (Sandbox Code Playgroud)
bindingContext.ModelName包含"DynamicDataItem [0]".
如果我使用bindingContext.ValueProvider.ContainsPrefix(key),它返回true,但是当我执行GetValue(key)时,它返回null.如果我检查ValueProvider包含的内容,我会看到在"DynamicDataItem [0]"中有几个项目的Key Starting.我如何处理从当前绑定的项目的所有字段中检索信息("DynamicDataItem [0]")?我应该逐一检索它们吗?像这样:
var result1= bindingContext.ValueProvider.GetValue("DynamicDataItem[0].Id");
var result2= bindingContext.ValueProvider.GetValue("DynamicDataItem[0].Name");
Run Code Online (Sandbox Code Playgroud)
我将非常感谢您给我的任何指导.
我想绑定一个Double?到TextBox,我遇到了问题,因为当用户清空文本框时,会发生验证.我认为我的应用程序在我找不到的某个地方进行了验证,所以我创建了一个快速应用程序来测试.
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
DataContext = new ViewModel() {Value = 3, Value2 = null};
}
}
public class ViewModel
{
public double Value { get; set; }
public double? Value2 { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
xaml
<StackPanel Grid.Row="0" Orientation="Horizontal" Margin="5" Height="20px">
<TextBlock Margin="0,0,5,0">Double:</TextBlock>
<TextBox Width="50px" Text="{Binding Value}"></TextBox>
</StackPanel>
<StackPanel Grid.Row="1" Orientation="Horizontal" Margin="5" Height="20px">
<TextBlock Margin="0,0,5,0">Double?:</TextBlock>
<TextBox Width="50px" Text="{Binding Value2}"></TextBox>
</StackPanel>
Run Code Online (Sandbox Code Playgroud)
当我运行应用程序时绑定到Value2的TextBox为空,但如果我键入一个值然后删除它,当TextBox失去焦点时它会显示错误.它只会在我键入值时消失.
我发现这篇文章建议使用一个字符串,但他最初使用的是双倍而不是双倍?
我怎样才能做到这一点?是使用字符串的唯一方法吗?
绑定到双倍似乎很奇怪?不允许我设置空值.
我正在使用Oracle 10.2.
我正在使用一些脚本将一些ORACLE对象从一个SCHEMA(S1)移动到另一个(S2).我正在创建具有DBA角色的功能.移动时,我的一个功能变得无效,但我不明白为什么.它的代码如下:
my_func,并将
CREATE OR REPLACE FUNCTION S2."MY_FUNC" RETURN VARCHAR2 IS
something VARCHAR2;
othervar VARCHAR2 (50):= 'TEST';
BEGIN
something := S2.MY_FUNC2();
/*some code*/
return othervar;
END;
/
Run Code Online (Sandbox Code Playgroud)
如果我使用MY_FUNC2没有架构,它的工作原理:
something := MY_FUNC2();而不是 something := S2.MY_FUNC2();
My_FUNC2
CREATE OR REPLACE FUNCTION S2."MY_FUNC2" RETURN VARCHAR2 IS
something BOOLEAN;
othervar VARCHAR2 (50) := 'TEST2';
BEGIN
/*some code*/
return othervar;
END;
/
Run Code Online (Sandbox Code Playgroud)
MY_FUNC2有一个这样的同义词:
CREATE OR REPLACE PUBLIC SYNONYM "MY_FUNC2" FOR "S2"."MY_FUNC2"
Run Code Online (Sandbox Code Playgroud)
MY_FUNC 编译错误:
PLS-00302:必须声明组件'MY_FUNC2'
我不明白为什么我得到这个错误,当我的函数在其他模式(S1)中时,它们具有完全相同的结构并且同义词创建完全相同(但指向S1)并且MY_FUNC编译良好.
我最初没有创建这个函数和同义词.是否有可能我在S2中缺少某些特权,所以MY_FUNC可以正常工作吗?
我有一个像这样的网格:
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="1*"/>
<ColumnDefinition Width="4*"/>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="1*"/>
</Grid.RowDefinitions>
<TextBlock Grid.Row="0" Grid.Column="0">Row 0, Column 1</TextBlock>
<TextBlock Grid.Row="1" Grid.Column="0">Row 1, Column 1</TextBlock>
<TextBlock Grid.Row="2" Grid.Column="0">Row 2, Column 1</TextBlock>
<TextBlock Grid.Row="3" Grid.Column="0">Row 3, Column 1</TextBlock>
<TextBlock Grid.Row="0" Grid.Column="1" Grid.RowSpan="4">Column 1</TextBlock>
</Grid>
Run Code Online (Sandbox Code Playgroud)
我不会在实际应用程序中实际使用TexBlocks,我用它们来使示例更容易.基本上我想设置从第1列中删除第0列中所有内容的边框.
你是怎样做的?
我需要使用小数分隔符和千位分隔符来验证数字是否有效.我需要一个正则表达式,因为当前的代码,我没有使用正则表达式不能正常工作,我的目标是解决它.
所以以下组合是合法的(使用.小数分隔符和,千分隔符)
但以下不合法:
基本上我想要正确使用十进制和千位分隔符或根本没有它们的数字,但不是无效的组合.我环顾四周,到目前为止,我找到了这篇文章.当数字有十进制分隔符和千位分隔符时,它有一个很好的正则表达式匹配,但是当我尝试添加其他选项(仅带小数分隔符或数字整数的数字)时,我打破了表达式.
我决定也许我可以捕获与或匹配规则的组,因此数字匹配一个表达式或另一个表达式如下:
^([+-]?[0-9]{1,3}(,[0-9]{3})*(\.[0-9]+)?)|(((\d)*)+?(\.\d))|(\d*)$
Run Code Online (Sandbox Code Playgroud)
第一组是从另一个帖子的表达,第二组我认为用小数分隔符覆盖数字,最后一个是整数,但它不起作用.
例如,这些数字不匹配:
我认为这个问题正在发生,因为它总是测试第一组,但我不确定如何正确使用组,因此它匹配其中任何一个.另外我想我会把 - +标志放在错误的地方.
我做了很多搜索,找不到一个正常工作的表达.从建议的:
((\d){1,3})+([,][\d]{3})*([.](\d)*)? - >它错误地捕获了10000000和10,000,000.^(?!0+\.00)(?=.{1,9}(\.|$))\d{1,3}(,\d{3})*(\.\d+)?$ - > 10000000失败/^(?!0+\.00)(?=.{1,9}(\.|$))(?!0(?!\.))\d{1,3}(,\d{3})*(\.\d+)?$/ - > 10000000失败((\d){1,3})+([,][\d]{3})*([.](\d)*)? - > -100.03失败 这可以在正则表达式中使用OR而不捕获所包含的内容吗?帖子不是重复的,它解释了可以帮助我解决问题的东西,但它不是重复的,特别是因为我也有+ - 符号的问题.此外,我的问题涵盖了一个对我来说不是特别的问题,这是许多人面临的问题,但从我迄今为止发现的实现来看,没有任何问题.
^-?([0-9]{1,3}\.?)+$ - >它失败了-1000但不是100.00.3而不是100.00.3^-?(?!0)(?:\d+|\d{1,3}(?:\.\d{3})+)$ - > -100.03失败