假设我有一个填充了布尔值的数组,我想知道有多少元素是真的.
private bool[] testArray = new bool[10] { true, false, true, true, false, true, true, true, false, false };
int CalculateValues(bool val)
{
return ???
}
Run Code Online (Sandbox Code Playgroud)
如果val为真,则CalculateValues应返回6,如果val为false,则返回4.
明显的解决方案:
int CalculateValues(bool val)
{
int count = 0;
for(int i = 0; i<testArray.Length;i++)
{
if(testArray[i] == val)
count++;
}
return count;
}
Run Code Online (Sandbox Code Playgroud)
有"优雅"的解决方案吗?
我有一个来自第三方的dll,它是用C++编写的.以下是来自dll文档的一些信息:
//start documentation
RECO_DATA{
wchar_t Surname[200];
wchar_t Firstname[200];
}
Run Code Online (Sandbox Code Playgroud)
描述:用于接收功能结果的数据结构.所有功能结果将存储为Unicode(UTF-8).
方法:
bool recoCHN_P_Name(char *imgPath,RECO_DATA *o_data);
Run Code Online (Sandbox Code Playgroud)
输入:
char * imgPath
Run Code Online (Sandbox Code Playgroud)
此功能识别的图像位置的完整路径
RECO_DATA * o_data
Run Code Online (Sandbox Code Playgroud)
用于接收功能结果的数据对象.函数返回:如果成功则返回true,否则返回false.
//end documentation
Run Code Online (Sandbox Code Playgroud)
我试图从我的C#应用程序调用recoCHN_P_Name.为此,我想出了这段代码:
导入dll的代码:
public class cnOCRsdk
{
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
public struct RECO_DATA{
[MarshalAs(UnmanagedType.ByValTStr, SizeConst=200)]
public string FirstName;
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 200)]
public string Surname;
}
[DllImport(@"cnOCRsdk.dll", EntryPoint="recoCHN_P_Name")]
public static extern bool recoCHN_P_Name(byte[] imgPath, RECO_DATA o_data);
}
Run Code Online (Sandbox Code Playgroud)
调用函数的代码:
cnOCRsdk.RECO_DATA recoData = new cnOCRsdk.RECO_DATA();
string path = @"C:\WINDOWS\twain_32\twainrgb.bmp";
System.Text.ASCIIEncoding encoding = new System.Text.ASCIIEncoding();
byte[] bytes …Run Code Online (Sandbox Code Playgroud) 我正在开发一个对WebService进行异步调用的应用程序.
我添加了一个代理类来进行异步调用.代码编译并正常运行,但每当我尝试双击解决方案资源管理器中的代理类(Visual Studio 2008)时,我会看到一个页面
要在加载设计器之前防止可能的数据丢失,必须解决以下错误:代理类需要WebServiceBindingAttribute.
我的代理类已经这样定义了
namespace AsyncCaller
{
[WebServiceBindingAttribute(Name = "AsyncRequestSoap", Namespace = "http://tempuri.org/")]
public class AsyncCallerProxy : SoapHttpClientProtocol
{
public AsyncCallerProxy()
{
this.Url = "http://localhost/MyAsyncService/AsyncService.asmx";
}
Run Code Online (Sandbox Code Playgroud)
所以我看不出错误的原因.
这是一个非常小的问题,因为我仍然可以运行该应用程序,但我很好奇.
当我尝试绑定到System.Type.Name时,这是我遇到的异常.
这是我正在做的事情:
this.propertyTypeBindingSource.DataSource = typeof(System.Type);
/* snip */
this.nameTextBox1.DataBindings.Add(
new System.Windows.Forms.Binding(
"Text",
this.propertyTypeBindingSource,
"Name", true));
Run Code Online (Sandbox Code Playgroud)
是否有一些绑定到System.Type的技巧,是不允许的还是有任何解决方法?绑定到其他类型没有问题.
假设我有一个类库的项目.我在该库中有一个类,这个类有一些只在类中使用的方法.像这样:
public class MyClass
{
public void MyPublicMethod
{
int k
// do something ...
int z = MyInternalMethod(k);
// do something else ...
}
internal int MyInternalMethod(int i)
{
// do something ...
}
}
Run Code Online (Sandbox Code Playgroud)
现在我想为这些方法编写单元测试.我会创建一个"单元测试"项目,从中引用nunit并写下这样的东西
[TestFixture]
public class UnitTests
{
private MyClass myClass;
[SetUp]
public void SetupTest
{
myClass = new MyClass();
}
[Test]
public void TestMyInternalMethod
{
int z = 100;
int k = myClass.MyInternalMethod(z); //CAN NOT DO THIS!
Assert.AreEqual(k, 100000);
}
[TearDown]
public void TearDown
{ …Run Code Online (Sandbox Code Playgroud) 假设我有一个_Layout.cshtml,我在其中渲染左侧边栏,这对我网站的每个页面都是通用的.沿着这些方向的东西 - 例如菜单
<div id="left-sidebar">
@Html.Action("_MenuView", "LeftSideMenu")
</div>
Run Code Online (Sandbox Code Playgroud)
我想要的一个功能是添加另一个局部视图,但只在网站的某些部分显示.
例如,在博客部分中,我可能想要显示帖子类别列表或帖子的树视图.
<div id="left-sidebar">
@Html.Action("_MenuView", "LeftSideMenu")
@if ("???")
{
@Html.Action("_BlogTreeView", "BlogEntries")
}
</div>
Run Code Online (Sandbox Code Playgroud)
我怎么能这样做?我知道如果我正在渲染的视图由BlogController返回,我想显示"_BlogTreeView"...我从哪里开始?
我已经成功创建了返回游标集的函数,即:
CREATE OR REPLACE FUNCTION select_multiple(refcursor, refcursor)
RETURNS SETOF refcursor AS
$BODY$
BEGIN
OPEN $1 FOR SELECT testtemptable.myid FROM testtemptable; -- Open the first cursor
RETURN NEXT $1; -- Return the cursor to the caller
OPEN $2 FOR SELECT testtemptable.name FROM testtemptable; -- Open the second cursor
RETURN NEXT $2; -- Return the cursor to the caller
END;
$BODY$
LANGUAGE plpgsql VOLATILE
Run Code Online (Sandbox Code Playgroud)
我调用该函数,并希望每个游标返回5行,看起来好像是这样。这就是我所说的:
BEGIN;
select select_multiple('a', 'b');
FETCH ALL IN "a";
FETCH ALL IN "b";
COMMIT;
Run Code Online (Sandbox Code Playgroud)
我的问题是,但是,我如何才能“可视化”数据以验证返回的内容?“数据输出”选项卡什么都没有显示,而“消息”选项卡显示
Query result with …Run Code Online (Sandbox Code Playgroud) 仍在研究从这里开始的问题 从C#调用C++ DLL函数:结构,字符串和wchar_t数组.,但采用不同的方法.
按照从非托管代码调用托管代码的示例,反之亦然,我在C++中编写了一个托管包装器来访问非托管C++ DLL中的unmanages类.
它看起来像这样:
//in header file
public __gc class TSSLDllWrapper
{
public:
TSSLDllWrapper();
//this is the unmanaged class
CcnOCRsdk * _sdk;
bool convertHKID_Name(char *code, RECO_DATA *o_data);
};
//in .cpp file
TSSLDllWrapper::TSSLDllWrapper(void)
{
_sdk = new CcnOCRsdk();
}
bool TSSLDllWrapper::convertHKID_Name(char *code, RECO_DATA *o_data)
{
return _sdk->convertHKID_Name(code, o_data);
}
//C++ RECO_DATA structure definition:
struct RECO_DATA{
wchar_t FirstName[200];
wchar_t Surname[200];
};
Run Code Online (Sandbox Code Playgroud)
现在我有一个可以导入到我的C#项目的DLL.
但问题是:当我想从dll文件调用该方法时,如下所示:
TSSLDllWrapper wrapper = new TSSLDllWrapper();
bool res = wrapper.convertHKID_NameSimple( //need to pass …Run Code Online (Sandbox Code Playgroud) 这段代码在Windows Compact Framework上运行,它的作用是显而易见的.看起来它应该被重构(特别是考虑到我可能想稍后添加cmd.ExecuteResultSet()),但我看不到一种优雅的方式来做到这一点.任何想法都赞赏.
internal void RunNonQuery(string query)
{
string connString = GetLocalConnectionString();
using (SqlCeConnection cn = new SqlCeConnection(connString))
{
cn.Open();
SqlCeCommand cmd = cn.CreateCommand();
cmd.CommandText = query;
cmd.ExecuteNonQuery();
}
}
internal int RunScalar(string query)
{
string connString = GetLocalConnectionString();
using (SqlCeConnection cn = new SqlCeConnection(connString))
{
cn.Open();
SqlCeCommand cmd = cn.CreateCommand();
cmd.CommandText = query;
return int.Parse(cmd.ExecuteScalar().ToString());
}
}
Run Code Online (Sandbox Code Playgroud) c# ×5
c++ ×2
.net ×1
arrays ×1
asp.net ×1
asp.net-mvc ×1
boolean ×1
cursor ×1
data-binding ×1
dll ×1
dllimport ×1
extern ×1
fetch ×1
nunit ×1
postgresql ×1
refactoring ×1
types ×1
unit-testing ×1
web-services ×1