Difference Between Parameterized Property And Function?
Mar 15, 2012
I am coming from the C# world to VB.NET and this puzzles me. Why are there 2 ways of doing the same thing? or is there some difference I am not aware of? What is the difference between the following:
Public ReadOnly Property Test(ByVal v as String) As Integer
Get
Return SomeOperationOn(v)
End Get
End Property
And
Public Function Test(ByVal v as String) As Integer
Return SomeOperationOn(v)
End Function
When do you use one as opposed to the other?
It seems that in the following example, TestProperty() and TestDouble() are functionally equivalent. Is the case? I usually use Property/Get when I have a single line "Return Variable_" type of "function", and Function when I have a more involved thing going on. Is that reasonable?
vb Public Class TestClass Public ReadOnly Property TestProperty() As Double
I am taken DateTimePicker2, DateTimePicker3 n textbox6.Now i wanted to display the result of subtraction of these two dates(DateTimePicker2-DateTime Picker3) in textbox6 automatically. I don't want to enter the result manually. Plz hlp me I need it badly. I hav already tried in lost focus event also its nt workin.
One of the problems with datediff function is that even if the two dates are 31-12-2011 and 01-01-2012,it will show the difference as 1 year.How to overcome this problem?
What's the difference between these two declarations for PInvoking a user32.dll function?The first way, which I've commented out since it gets an error (Type DllImport is not defined"), the second way works. [code]
Shadows vs. Overrides in VB.Net.What's the difference between shadowing a function in a base class in a subclass and overriding the same function? There is performance issues involved too?I know how to shadow and how to override in VB.net. My question is about when and why should I shadow a function instead override it and vice-versa.
explain me the difference between them? I'm new to visual basic, and I need to know the very basic things in Visual Basic allowing me to become a professional User
I was wondering if there was a way to get the name of the property my statement is in, like I can get the name of a function in PHP with the magic constant __FUNCTION__. Is there a way to get that property name, and more in general, also for functions and methods?
In my class there's an object belonging to Process class. So, in my wrapper class, I need to get the "StartTime" & "EndTime" of the process object. I'm having confusion whether to use a ReadOnly property for this or a function returning the date, in my wrapper class
Is it a good practice to use a function for this purpose or a property ?
Is there ever a situation where I should do the following in .NET instead of using a property with read/write capability?
private S as string public function GetS() as string
[code]....
Do properties simply provide a more efficient way for doing the same thing?Will properties be any slower than the above accessor functions in a high performance application?
i read an article about datacolumn.expression property here [URL]. this is really great. but i was just wondering, for my case i want to use my custom function to use in the expression. basically, on my datatable i added an unbound column AGE. when i display records, i just want the age textbox to be populated with the computation of the person's age based on birthdate.
I was wondering if someone could explain to me the differences between these 2 ways of accessing a class property.Access Way : 1 (To me this looks like im declaring the property of the class as a Global variable which can be changed anywhere
I'm trying to create a generic function to build a Linq expression from a list of Telerik grid filters. I'm trying to stay clear of dynamic Linq. Because I don't know the type that I'm building the expression for, I'm attempting to use reflection in the lambda functions to refer to a property, but after applying the fix suggested by @JaredPar I get the error, "The LINQ expression node type 'Invoke' is not supported in LINQ to Entities." Is there any way around this? here is my code:
Public Shared Function buildRadFilter(Of T)(ByVal filterExpression As List(Of GridFilterExpression)) As Expressions.Expression(Of Func(Of T, Boolean)) Dim returnPred = PredicateBuilder.True(Of T)()
I have a single form application with two modules. The first module holds all the Sub procedures that provide the filtering functionality for 3 DataGridViews on the form. The second module holds the Predicate of T functions that actually filter the List(Of T) objects that are bound to the DataGridView controls.
I split them into modules since I was starting to have difficulty organising and finding the procedures and functions if I held them all in the form code.In some cases I can happily both Get and Set form control properties from within the modules. In one case I simply can't, I suspect I may yet find some more instances as I test further. The offending line is in one of the Predicate of T functions:
If tWord.Length <= Investigator.NumericUpDown.Value Then Investigator is the Class name of the form.
I suspect my problem might be that the Predicate of T functions (which are collated in a module) are called from the DoWork procedure of a BackgroundWorker that is a component of the form - hence the DoWork procedure is in the form code, but I'm not certain. The same code worked fine when everything was all in the form code. The error reported when adding a watch to the Value property in the module function is " 'Value' is not declared. It may be inaccessible due to its protection level ". I have tried the following to no avail:
1) Setting the NumerciUpDown modifier to Public
2) Adding a Public ReadOnly Property to the form class that simply returns the Value propety of the NumericUpDown
3) Adding Imports Root Namespace.Investigator to the module
I am considering adding a Public Shared variable to hold the curent value of the NumericUpDown and referencing that from the Predicate of T function.I realise, and have read many times, that accessing form control properties from module functions is generally not seen as a smart thing to be doing, but since I am not trying to chnage anything, I simply want to know what the current value is I decided that I wasn't too worried.
During a code review I looked at set of repository classes (in vb.net). I am used to seeing these repository classes full of functions that return collections (among other things) of your domain objects. However, this repository had 1 public property and 1 private variable that looked something like this:
Private _item as Collection (of Customer) Public Item as Collection (of Customer) Get... Set...
In the "Get", there is code that gets a the Customers from the DAL and loads it in the private _item. What would the benefits be in using a property (customerRepository.Item) instead of plain old function (customerRepository.GetAllCustomers)? The "Property" way looks odd to me but odd doesn't always mean wrong.
The function for getting the difference in days between two days is giving me a wrong answer here.What could i be doing wrong??? DateDiff(DateInterval.Day, CDate("28/1/2011"), CDate("31/1/2011"))
So if I create an object test, and it has a property color. When I add this object to an array list I typically can access this using myarray(0).color but intellisense doesn't 'know' that I have a 'test' object inside the array. It would let me type myarray(0).whatever but would then crash if I made typo. It seems like I should be able to let it know what type of object I am trying to work with inside the arraylist. In code maybe something like this
In my project I need to log all queries executed against my database. As an example we can use the staff user data here. In that class I have a function generating the command with the parameters as follows:
How to use parameterized queries in vb.net? Because I always wanted to make a program that could read an ms access database and display results based on your query.
statement = "SELECT OrderID, (SELECT VendName FROM Vendors WHERE Vendors.VendorID = Orders.VendorID) " & ",OrderDt, RcvdDt, OrderTotal " & "FROM Orders " & "WHERE VendName=? " & "ORDER BY OrderDt DESC" Dim cmd As New OleDbCommand(statement, connection) cmd.Parameters.AddWithValue("VendName", txtVendorFilter.Text) Dim reader As OleDbDataReader = cmd.ExecuteReader(CommandBehavior.Default)
I was trying to do this before by simply concatenating the textbox value right into the SQL and I was getting a "No values given for required parameters", and read that that I should use parameterized queries instead. So I tried this and it doesn't give me any errors, but the reader never has anything in it. I've never used parameterized queries before, so I'm a bit lost as to why this isn't working. I've changed the above code to account for OLEDB from what I briefly read on how it should work, and it's giving me the "no values given for required parameters" again.